My daughter is 3 1/2 years old and around 2 years she started to be very selective in what she ate. She also gags on meats, but over the past year and a half she finally eats fish sticks, ham and homemade chicken nuggets (some days she still does not eat those because she just is not big into meat). At times I call her a vegetarian because she rarely eats meat but loves fruits and sometimes corn/peas. She would live on strawberries, watermelon, apples, raisins, cheese, whole grain crackers, yogurt, grilled cheese, oatmeal & cereal.
For the most part we just keep offering a well rounded meal, I do not force her to eat any of it BUT she does not get anything else OR dessert till she has had enough bites of all her food. We did try to force food into her which made the gagging even worst, so now we just say you have to eat what is given (I always have 1-2 thing she likes on her plate and a new item or something she does not always like) or no dessert/snack later. The gagging seems to be with certain textures of meat and veggies but it is also something they can control, so we just always offer healthy options with a daily multi-vitamin. If we are at a place that does not have something she will eat (usually over at others houses or church meals) I have a small bag of healthy snack that she can have (fruit, cheese, whole grain crackers).
Oh I just started steaming cauliflower in the oven then mashing them up with milk similar to how you make mash potatoes and that has gone over very well. It has the same texture of mash potatoes and similar taste (to me they taste even better). Good way to get veggies! We also only drink V8 Splash because it has servings of fruit and veggies.