I think you need to take the struggle out of it. It sounds to me like it has become more of a game than anything (for your son). My guess is that it's less about the food than it is about him wanting to assert his independence and make his own choices, thereby defying you.
I also would not give rewards/punishments for anything eating-related simply b/c I think you are treading on eating disorder ground in doing so. I was overweight as a child and I was told by my father when to stop eating. It resulted in my defying him and getting even fatter. It wasn't until I was in my mid-20's that I was able to develop a better relationship with food and lose the weight for good. Unfortunately for me, the issue of control is forever entangled with food.
I think I would enlist your son's help in choosing a healthy meal. Then, put the food on the table, let him eat (or not), and if he doesn't, suggest to him he pack it up for the road if he thinks he's going to be hungry later. Let him be responsible for it. I would also let him know you won't be able to buy anything while you're out because of cost. I would do all of this as nonchalantly as possible. I wouldn't ask him to eat (or not eat). Just let him honor his own hunger (or lack thereof).
As far as not eating anything but favorite foods, we are just starting to deal with this with our DD (5 in April). I run my kitchen like IdahoMom does, I try to make at least one thing I know DD will eat, but I am not a short order cook if she doesn't like the meal. If she's hungry enough, she'll eat what's put in front of her. If not, I'll offer up a salad or an apple later - something healthy in other words. I never, ever ask her to clean her plate (though if she wants seconds on items I consider to be less nutritious, she is expected to eat the salad or veggie first; she is also expected to try a bite of any new item before refusing it).
It's easy to give advice from the outside, so take this for what it's worth. I'm not an expert by any means!