gpspipe -r should produce clean NMEA data, but the version provided with Raspbian adds some JSON noise at the start that really doesn't belong. To output just NMEA sentences from gpspipe, this is what worked for me:
gpspipe -r | grep '^\$G' | tee test3.nmea
This filters out just the NMEA data, and copies the output to the screen and to the file test3.nmea.
You can convert this to KML using gpsbabel:
gpsbabel -i nmea -f test3.nmea -o kml -F test3.kml
Each of the points includes a timestamp, f'rinstance:
<Placemark>
<name>-3</name>
<snippet/>
<description><![CDATA[
<table>
<tr><td>Longitude: -79.264922 </td></tr>
<tr><td>Latitude: 43.730687 </td></tr>
<tr><td>Altitude: 502.953 ft </td></tr>
<tr><td>Speed: 1.4 mph </td></tr>
<tr><td>Heading: 221.5 </td></tr>
<tr><td>Time: 2012-12-15T21:27:34Z </td></tr>
</table>
]]></description>
<LookAt>
<longitude>-79.264922</longitude>
<latitude>43.730687</latitude>
<tilt>66</tilt>
</LookAt>
<TimeStamp><when>2012-12-15T21:27:34Z</when></TimeStamp>
<styleUrl>#track</styleUrl>
<Point>
<coordinates>-79.264922,43.730687,153.30</coordinates>
</Point>
</Placemark>
If you want something that Google Earth can still read, but has cleaner metadata, I'd recommend GPX. You can make it with:
gpsbabel -i nmea -f test3.nmea -o gpx -F test3.gpx
Each trackpoint will look a bit like:
<trkpt lat="43.730533333" lon="-79.265021667">
<ele>169.000000</ele>
<time>2012-12-15T21:28:10Z</time>
<course>186.539993</course>
<speed>1.347844</speed>
<fix>3d</fix>
<sat>4</sat>
<hdop>4.300000</hdop>
<vdop>1.000000</vdop>
<pdop>4.400000</pdop>
</trkpt>
These results were tested and generated on a Raspberry Pi running latest Raspbian, with gpsd reading from a Pharos GPS-500 on /dev/ttyUSB0.
Does your GPS have a satellite fix? Check with cgps/xgps, and see that the Status is at least '2D Fix'. If you're indoors and haven't warm-started your GPS receiver, you may never get a fix. You'll still get NMEA data, just it doesn't contain $GPRMC position data.