My little guy is 27 months, somewhat shy with family he doesn't now well, so I encourage him to talk and socialize with them with me nearby. I try to discourage him gently from clinging to me. My older two were shy as well, would cling to me at first but always allowed themselves to be comfortable after "testing the waters."
One of the comments you made made me think: "His teachers tell me he is fine after I drop him off and leave and I know he is because several times when I've picked him up, before he notices me, he is playing and interacting with the other kids." So I'm thinking that maybe the fact that you ARE there in social situations and available for him to cling to is a part of the problem. Try busying yourself with something so he can't cling to you, even make a short trip outside to "Look for something." With a birthday party situation I would recommend the same thing, you or dad busy yourselves so he can't stay right next to you, unless he follows you wherever you go and whatever you do, but I would stress I "have to do this and can't sit down or be in the room right now." With the host's permission you could also excuse yourself from the get-together, say you need to leave for a bit, and sit outside unbeknownst to your son to see how he responds to your leaving.
I think a self-defense class would be beneficial for him. My nephew attends tae kwon do, and his mom can sit in the van in front of the studio and watch the classes, but she's not right there in the room for him to constantly look to, which he'd been doing. Leaving him at some sports practices or games could be difficult, parents are often expected to participate in some way, children need their parents there for support and encouragement, and it may even be required for a parent or guardian to be there in view of his age.
The one thing that does indicate to me that there could be a more serious problem than simple shyness is the fact that he kept his eyes closed for over an hour. I realize that he was trying to not let people see him, but I would have told him he was being rude and that he needed to open his eyes. If he continued I would have told him he was going to a room I asked the in-laws for him to use, that I wouldn't allow him to be rude, and that if he didn't want them to see him he would spend his time in the designated room where they couldn't.
I can understand him not wanting "attention" to a hairstyle or clothing, I used to be somewhat the same way when younger. Encourage him to help pick out his own clothing and hairstyles, give him a choice between A and B, two things you can live with either way. I did this with my older two and now with my youngest, and something about making a choice makes them better able to live with it ; )
Also, since I'm not an expert on social anxiety in children I took the liberty of finding an informational article I hope will be beneficial to you, I learned a lot from it myself:
http://www.klis.com/chandler/pamphlet/socphob/socphobpamp...
Being that he doesn't hyperventilate, panic or get hysterical tells me it's not social anxiety yet. But if you conclude your son may truly be suffering from this make an appointment with his pediatrician to get the ball moving on intervention and treatment. God bless.