I'm having the same problem. No !!! in my code and I was uploading fine, then it started giving me the same timeout error
avrdude: stk500v2_ReceiveMessage(): timeout
For a while, just unplugging the USB and plugging it back in would allow an upload, now it won't upload at all. And I did that, though it was a pain in the neck.
Grrrr. Frustrating, I'm wondering if I made the wrong choice in getting this Arduino instead of another micro controller.