Update 2016:
GCM is being replaced with FCM
- FAQ about the replacement
- Documentation
Update 2015:
Have a look at developers.android.com - Google replaced C2DM with GCM
Demo Implementation / How To
Update 2014:
1) You need to check on the server what HTTP response you are getting from the Google servers. Make sure it is a 200 OK response, so you know the message was sent. If you get another response (302, etc) then the message is not being sent successfully.
2) You also need to check that the Registration ID you are using is correct. If you provide the wrong Registration ID (as a destination for the message - specifying the app, on a specific device) then the Google servers cannot successfully send it.
3) You also need to check that your app is successfully registering with the Google servers, to receive push notifications. If the registration fails, you will not receive messages.
First Answer 2014
Here is a good question you may should have a look at it: How to add a push notification in my own android app
Also here is a good blog with a really simple how to:
http://blog.serverdensity.com/android-push-notifications-tutorial/