enstrum:
What if you use separate libraries (SoftwareSerial and AltSoftSerial) to send information? For example, GSM reads to one library, while GPS reads to the other...
You cannot use cannot use SoftwareSerial with any other software serial library (AltSoftSerial or NeoSWSerial). SoftwareSerial disables interrupts for the entire character time, both sending or receiving. This prevents other libraries from receiving or transmitting. Also, SoftwareSerial cannot transmit and receive simultaneously. Sometimes, you cannot use SoftwareSerial with HardwareSerial (depends on baud rates).
AltSoftSerial is the best software serial library, because it uses the Input Capture pin to record when received bits arrive (actually, the transitions from 0-1 or 1-0). This is more immune to the processor load (e.g., other interrupts).
The second best software serial library is my NeoSWSerial. It uses Pin Change Interrupts to receive characters, so it is more susceptible to the processor load. If other interrupts take too long, received bits will be lost. For transmitting characters, it also disables interrupts for most of the character time. For the OP, NeoSWSerial could be used for the GPS, since it will not be transmitting to the GPS device, just receiving.
The possible combinations for the OP are:
1) GPS on Serial and GSM on AltSoftSerial
2) GPS on AltSoftSerial and GSM on Serial
3) GPS on NeoSWSerial and GSM on Serial
4) GPS on NeoSWSerial and GSM on AltSoftSerial
Choice 1 would be completely reliable, and the sketch could still use Serial for debug prints.
Choice 2 would be completely reliable, but the sketch could not use Serial for debug prints.
Choice 3 would be completely reliable, but the sketch could not use Serial for debug prints.
Choice 4 would be fairly reliable, and the sketch could still use Serial for debug prints.
All of these choices require configuring/modifying the GSM library to use a different serial port.
Like PaulS said, buying a different Arduino can also make life easier:
1) Buy a Mega, Due or Teensy. Use Serial1 and Serial2. Serial can be used for debug prints.
2) Buy a Micro or Leonardo. Use Serial1 and AltSoftSerial. Serial can be used for debug prints.
There is a similar project here. That is a fairly simply sketch. User itmoto eventually developed it into a larger project, with sleep states to increase the battery life. I would suggest reading through those posts to see what kind of problems you are going to have, and How To Fix Them.