Hi, I need to ask: are you sure the modem is connected to Serial (i.e. TX / RX)?
As far as I can see, though there is room for improvement, your code should be able to send a message. Possible causes why it doesn't:
1. baud rate: 9600 should be good, but check what is specified as the default for the gms module you are using.
2. garbage: after Serial.begin() and a delay() you send the AT+CMGF command. Try sending an empty line (println("")) before the command, just to be sure that the modem discards any extra characters pending in its receive buffer and starts from a clean one.
3. failure of AT+CMGF command. Since you don't check for a response, we cannot exclude that this command fails. A quick and dirty method to check for the response is to loop until you read() a 'K' or a 'R', as you do later when waiting for the '>' character. Then you may switch on an LED to get some visual feedback.
4. bad phone number. You may try and specify the number using the international format (+<country_code><number>).
You may also try to send everything in a single line (plus ctrl-z):
Another possibility is that, because of the different voltage, the gsm TX HIGH is not read as such by the Arduino RX line. This shouldn't happen if the gsm gets its normal voltage, but you may want to check the power source.