My son was 4 and still not eating most foods. His situation was much worse. He would only eat about 10 different foods - saltines, gold fish, animal crackers, apple sauce, peas, pears, bananas, etc. We got into the habit of asking if he would eat what was served. When he inevitably refused, we gave him what he really wanted.
We were told by professionals (teachers, doctors, psychologists) that we could not continue to cater to his taste. He had to eat what was served. Period.
We started out simple - just one bite of each thing at that table. After he ate that, he could eat his favorite foods. Once that was less stressful, we moved to two bites, and so on.
We didn't make him sit until he ate it. We just said he couldn't eat anything else until he ate his dinner. That dinner would be his only option for desert, bedtime snack, breakfast, etc. until the next dinner.
Yes, he also threw up a few times. At first, I gave into that. After all, I remember throwing up when I disliked food. But, he seemed to gag on everything at every meal. So, as heartless as it seems, we cleaned him up and then asked him to try again.
It took a LONG time and we had to stick with it. But, it WAS WORTH IT! He's 5 1/2 and now eats everything we serve (without any gagging), and is more willing to try new foods. There are several foods that he hated - even threw up - and now LOVES. Yes, I said loves. He will actually request those meals and ask for seconds!
For what it's worth, I hated fruits and vegetables as a child. I would gag whenever I ate them. That's why I was so lenient with my son at first. But, now, I really regret that my parents hadn't been more insistent. At my age, it's a lot harder to learn good eating habits!
Good luck with whatever you choose!