My son was exactly like this at just about the same age. He is now almost 5 and loves going places. He has always had a very cautious personality and is never quick to jump into a new setting, but he loves going new places and observing new things. He still does not like large groups of children, but that has improved, too, since he started school two months ago.
My daughter, who is 2.5, has the exact opposite personality - and she, too, has been asking to stay home since about 18 - 20 months old. She sounds like your son and her own brother - crying to come home as soon as we get somewhere, or even before we leave our house.
My children have such different personalities, yet they went through the same aversion to out-of-home events at about the same age. I just assumed there is something about the age where the outside world poses too many choices and details and it's less stressful in the child's eyes to stay at home. Because my son is Mr. Conservative and even he has outgrown his reluctance to "be social" I feel pretty confident that my daughter - and your son! - will outgrow it, too. Just be patient and sympathetic; he might have worries that he can't articulate. Maybe ask the pediatrician about typical development at this age? You certainly aren't alone with this question and I'm convinced it's a normal part of development.
Keep me posted and feel free to vent - I know it can be frustrating from the mom's point of view, especially since you probably need way more out-of-home time than your son does at this point! Good luck; have patience!