It may sound harsh (especially if you're a first time mom), but children WILL eat when they're hungry. If he's turning up his nose at what's being offered, let him skip the meal. And every time he complains about being hungry, simply offer him the meal you had prepared earlier. Trust me when I say this will be a lot harder on you than it is on him, but you have to understand that he's not going to become physically ill or starve to death over a couple of missed snacks/meals. But letting him have complete control over his diet like this could eventually have health consequences, so you should nip it in the bud now.
I'm not saying to torture the poor child by only offering brocolli and cooked spinach, but giving him healthy (and varied) choices just makes sense. Do yourself a favor, and quit buying the yogurt for a while. It will only be a temptation for you to give into when he's fussing. But like getting rid of the bottle/binky, you just have to tough it out and your littlle picky eater will eventually be a LOT more open-minded. :-)
Good luck to you!
-S.
P.S. I know some others mentioned teething, but in my experience, a child WANTS to bite when they're teething...not the opposite. To test this theory, I suppose you could offer him applesauce or something else pureed to see if he simply prefers things to be soft right now. Maybe some diced, canned peaches and cooked carrots, etc.