Ah, the PB&J. That is every lunch at our house. It bugs me but then I realized that my husband makes the same sandwich every day for lunch, too. Maybe it's genetic.
My son ate just about anything we ate up until sometime after his third birthday. At that point, his list of acceptable foods dropped off but, most frustratingly, they began to vary day to day. For example, he'll eat split pea soup with gusto one night and two nights later say it looks "nasty" and won't touch it. He turned 4 in October, so this has been going on for more than a year.
Mostly, I just try to avoid single dish meals or be sure to offer the parts that made the dish separately. On enchilada night, he gets the shredded chicken and cheese on a tortilla with the sauce on the side. We always put a small, token serving of what we're having on his plate. He has been known to refuse to keep it on his plate, which we allow, but mostly it just sits there. We use a sectioned plate to make sure nothing accidentally touches, what with the risk of food cooties and whatnot
. There are the exciting, totally random nights that he tries new foods after we've offered them dozens of times. So, it does happen but he seems to only choose foods that he doesn't like (asparagus, lettuce). And I know you're not supposed to but occasionally we pressure him to try a new food (usually a familiar food with a sauce) and he often likes it. Not that he'd eat it the next time it's served...
Sometimes, we will allow him to eat leftovers from a different night if he can't stand what we're having at all, but there have been more than a few nights that he will claim he's not hungry and leave the table quickly. Yes, at bed time he will ask for food and we offer to reheat his dinner or leftovers from a different night. Most of the time he still won't eat but sometimes he does. I figure those are the nights he's really hungry.