There is always a way. But things get nasty.
You can setup a PIC to record to the SD card directly. But SD requires that you write to it in 512 byte blocks. Since most PICs have under 300bytes of ram, this is too much for normal PICs. I recommend using an ARM or the common work around is to use an external SPI EEPROM or I2C EEPROM to temporarily store the GPS data until you hit a 512 block and then record this block to SD. Not great, but we've based a few projects on this pricipal.
-Nathan