Does startGSM() claim to succeed? - Do you get the "connected" message printed out..
Perhaps you can try calling Thingspeak.begin() only after you connect to GSM rather than before?
If that doesnt work you can avoid the thingspeak library altogether and just construct the URL yourself (its possible that the thingspeak library isnt tested for GSM since the source only refers to WiFi and Ethernet)
Sample code for a web client is https://www.arduino.cc/en/Tutorial/GSMExamplesWebClient
The URL you need can be found on the "Data Import/Export" tab of your channel page on the thingspeak website.