I have given up on my original idea to stream NMEA into Google Earth.. and found a better solution!
I was able to solve this by programmatically generating KML file for each position and attitude change and then opening up an instance of Google Earth with the generated KML file as parameter. This is happening in 250ms loop which makes the transitions smooth. Also, Google Earth detects that another instance is already running and therefore it only loads the KML file.
Here is a capture:

I was able to accomplish generating of KML using C# and SharpKml software library. Here is a code example:
private void GenerateKML()
{
SharpKml.Dom.Location loc = new SharpKml.Dom.Location();
loc.Latitude = currentLat;
loc.Longitude = currentLon;
loc.Altitude = currentAlt;
SharpKml.Dom.Model model = new SharpKml.Dom.Model();
model.Location = loc;
model.AltitudeMode = SharpKml.Dom.AltitudeMode.Absolute;
SharpKml.Dom.Orientation ori = new SharpKml.Dom.Orientation();
ori.Roll = currentRoll;
ori.Tilt = currentPitch;
ori.Heading = (currentTrack + 180) % 360;
model.Orientation = ori;
SharpKml.Dom.Link link = new SharpKml.Dom.Link();
link.Href = new Uri("model.dae", UriKind.Relative);
model.Link = link;
SharpKml.Dom.Placemark pmplane = new SharpKml.Dom.Placemark();
pmplane.Geometry = model;
File.Delete(AppDomain.CurrentDomain.BaseDirectory + kmlFileName);
SharpKml.Engine.KmlFile kml = SharpKml.Engine.KmlFile.Create(pmplane, false);
using (var stream = System.IO.File.OpenWrite(kmlFileName))
kml.Save(stream);
}
If you also want custom viewpoint of the model in Google Earth, instantiate LookAt object and assign it to model.Viewpoint
.