Another thought is maybe use dual memory cards,
How would that help? You still have a need to write and read at the same time.
is it hard to transfer files between two memory cards?
Never tried, but it really should be pretty simple. Although I don't think it will solve your problem.
What, exactly, is the Arduino doing? Reading data from a GPS I got. Apparently storing that data on an SD card, too. Where are you uploading to? How long does that take? What triggers that to happen? How often? Does the data get deleted after being uploaded?
You could hold a couple of sentences in memory while that data currently in the file is copied elsewhere, and then store those buffered sentences to a new file, if the data deleted after uploading. If it isn't, you can append the buffered sentences to the existing file.
The trouble with appending the data to the file is that it increases the time needed to upload the data. Eventually, you will reach a point where there is simply not enough memory to buffer new GPS data while the stored data is re-uploaded.