I had this problem with a Crowduino, running the Arduino IDE on OS X. The solution for me was to switch on verbose output during upload (in the Arduino IDE preferences pane).
Then, when uploading, you can see AVRDUDE sending three packets
avrdude: Send: 0   (with corresponding RX flashes on the board) right before the
avrdude: ser_recv(): programmer is not responding error.
The trick is to hit the reset button on the board immediately before these three packets are sent. Then the program will be uploaded successfully.