I was having trouble with the GPRS shield (v2.0) when trying to do data transfer with HTTP AT commands. Once data started flowing (using either the AT+HTTPACTION=0 or AT+HTTPREAD commands), the SIM900 would power down and shut off.
Eventually, it was determined that the SIM900 was requiring large bursts of current during data transfer, which the Arduino could not supply. I was advised to add a 1000 uF capacitor across the power pins (the 5v and GND pins on the shield), and that fixed the problem.