I agree with the others. My 3 year old is doing this again, and only wants peanut butter sandwiches, cheese, fruit, cucumbers and baby carrots. We just go with it...he has done this before and we find the bigger fuss we make, the more he refuses to eat. If we don't say anything at all about it, he eventually comes around. As long as they aren't losing weight, and they have an healthy rosy complexion, there usually isn't much to worry about.
I agree with Annie. Let him eat what he likes, if it's healthy food.
If he wants fruit for dinner, fine. If he wants ham and cheese cubes for breakfast, good too. If your house is full of healthy food and not a bunch of junk food, and he's not exceptionally thin, he'll do fine.
Americans have raised a couple generations of obese adults with the three meals a day, eat everything on your plate mentality. That doesn't work, and doesn't produce healthy people.
Eat when you're hungry, whole natural foods.
If you cater to his food preferences, you may have problems down the line. What I used to do was give them a little bit of everything that was on the table. For seconds they could have whatever they wanted (from those items being served).
If he won't eat dinner food, give him some lunch food, or breakfast food, whatever he will eat. At 2, my son lived on carrots, ham cubes, crackers and yogurt. It would not have thrilled me as a constant diet, but it got him through that picky time.