I have an extremely picky eater. We joke that he only eats about a dozen foods and only eats a "blonde food" diet (whole wheat toast and tortillas, eggs, carrots, milk, cheese but only one brand of sharp white cheddar, rice. . . things on the white - orange spectrum, basically). I almost died of shock one day when I saw him sitting in front of the TV for family movie night, peeling the snap peas I'd set out and EATING THE PEAS. They're green!! He's eating something green! Woohoo! Only in the last year or so has he also decided he'll eat cucumbers and lettuce. He'll be 10 next month.
At 3, you could have been describing my DS's diet. He was much more willing to try new foods for about the first year he was eating, then his diet gradually got more and more restrictive. He still nursed a ton. I was always thankful that my son was still nursing, and continued to nurse for a long time. It was reassuring to know that he was still getting high-quality protein and fats, plus the vitamins and minerals in my milk. However, he is and has always been small, "off the charts" for weight for most of his life. His pediatrician (we are lucky to have a cosleeping, homeschooling, extended breastfeeding children's Dad as our ped ;-) laughs whenever I express concern and calls them "breath-ivores." We've tested his iron, it's always been fine, and our ped discouraged me from testing the last time we went it, saying he really didn't think it necessary. He tells us about his own son who they said ate a white food diet. I've met the kid; he's a huge teenager now who clearly didn't suffer any growth harm from his limited diet.
We eat a varied diet, lots of different spices and flavors. We belong to a CSA so get a big basket of fresh, organic produce every week. Most of our other foods come from our local grocery co-op. I'm not a particularly creative or interested cook, so we do tend to eat the same thing frequently, but there's enough variety that he could be eating a lot more foods than he does. His twin sister loves trying new foods. She adores sushi (it's her most-requested food treat). She likes salsa and other spicy foods. I don't think it's anything you're doing or not doing, I think it's just normal for some kids.
From the reading I've done on picky eaters, it does appear to be at least somewhat genetic (my husband, as I learned, was also an extremely picky eater as a kid). It also appears to be personality. Most of the picky eaters I know are pretty "high needs" kids in other respects as well. Textures bother my DS. He's extremely sensitive to smells and tastes. He is slow to adapt to change. All affect a child's willingness to try anything new, not just food.
Your DS will probably more adventurous about food as he gets older, but I hate to say it will probably get worse before it gets better. Don't be surprised if he goes through food jags where he'll only eat one food for a time. We do also cater to our DS's food choices, to some extent, because if he doesn't eat he's impossible to live with. I try to serve something he'll eat at every meal (for example, if I make curry, then he'll eat the rice and some of the "toppings"). As he's gotten older, we've set some other rules. He's not allowed to call foods "yucky" or "gross". He does have to try new foods, but due to his taste and texture sensitivities, he doesn't have to swallow them. So basically that means touch his tongue to a fork-full of the food. My DH, somewhat jokingly but we've made it stick, created the rule that he can't remove a food from his diet without adding two more. And at his age, he can get himself something to eat if he won't share our meal (so that means often dinners are cereal or scrambled eggs, because he can do those himself). He has to EAT something at every meal.
Other things that have helped are to involve him as much as possible in choosing and preparing meals. He's been more willing to try things that he's had a hand in making. That doesn't necessarily mean he'll love them or eat them, but he does try. Also, visiting farms where he can pick his own food has led him to try and actually enjoy several new fruits and vegetables. Suggestions for feeding children usually recommend looking at your child's food comsumption over a week, not just meal to meal or day to day, and if he's getting a decent variety each week than he's probably perfectly fine. From what I've heard about teenage boys, once they start growing they will eat anything that doesn't sit still, so I figure what I save in grocerys today will be spent in another five years or so!