It sounds like the GPS serial stream is confuising the Arduino''s bootloader process.
If you put something like a line driver chip between the GPS and the RX line, you can use the driver chip's enable to connect/disconnect the GPS under software control...
I don't know if I'm explaining this very well: the basic idea is you use a digital pin to turn a switch on and off, and that switch hooks up/disonnects the GPS to the RX line. So your code, assuming the switch was on pin 3, would be something like:
void setup(){
int GPSlineEnable=3;
Serial.begin(4800);
}
void loop(){
digitalWrite(GPSlineEnable, HIGH);
//GPS is now connected
Note that you would need a pullup/pull-down resistor on the enable line to make sure the driver was disabled during bootloading.