My son does the same thing. One thing I do is make him take vitamins so I know he is getting some of the vitamins he needs. But we all sit at the dinner table and I put everything on his plate. He wont eat furit or vegies but I still put them on his plate. Then I put a bite on his fork of meat or whatever the main chourse is and say don't you dare eat my food. He laughs and thinks it is a game and he eats every time. Yet though I haven't gotten the furit or vegies down yet. He is also four years of age.
Your son is very likely fine from a medical standpoint, but the only way to be sure is to address this with his pediatrician, who may want to do some lab work to rule out any metabolic or endocrine problem. If everything is OK medically, you'll have to take the bull by the horns and make some changes in the way you address your son's diet.
Now, many young children are particular about their likes and dislikes, and for the most part this poses no problem. But diets can be too restrictive, resulting in children failing to receive adequate nutrition. You can help your son increase the range in his diet by stopping your practice of making alternative meals, and by reserving certain foods (e.g., ice cream) as dessert items, to be eaten only as a follow-up to regular meals. To the extent that you can change your behavior your son will also change.