I know it's hard, but you have got to remember that you know what's best for her -- she doesn't! We have had the same struggles in our house. Our daughter (10th percentile all the way around since birth) would certainly prefer peanut butter and jelly 3 times a day with goldfish snacks between meals for the rest of her life.
But here's the deal -- she won't starve herself. Really. You may wonder how she survives some days, but just offer her plenty of water if it makes you feel better.
We got "tough" on eating sometime between her 2nd and 3rd birthday. Well, not really "tough" but gave up the battle and let her decide if she was going to eat or not. Almost as soon as we let it go, she picked up the fork and started eating.
First, just to make us all feel better, and knowing the PB & J would still be part of our lives (hey, I like it too!), we switched to all natural or organic peanut butter (Skippy makes a yummy one -- still has sugar in it, but just peanuts and salt otherwise, and sugar is tons better than the high fructose corn syrup in the others), and organic or all fruit jelly/jam/preserves.
We also started buying all natural and trans-fat free chicken nuggets, and you can even find organic hot dogs! This way, we could have our "cheating" foods and not really be cheating! Also, I try to stock healthy snacks, so we don't even have the option of junk. Walmart now carries bags of organic apples -- the peel is softer so the kids will chomp into it peel and all and love it. Cascadian Farm makes yummy "harvest berry" granola bars that both kids (ages 2 and almost 4) love. Yes, we have the occasional box of poptarts or colorful sugary cereal, but those are reserved for "Fun Friday" (they eat what they want and run amok all day -- we don't clean, only play, play play!). Interestingly enough, they've started choosing high-fiber Kashi cereals (particularly Mighty Bites) on Fun Friday morning over the pink and purple stuff (not that this always happens, but enough to amaze me!)
Secondly, poor eaters are often heavy drinkers. This was sooo true with my daughter. We realized she wasn't eating her meals because she'd sit down at the table and suck down 8 ounces of milk before we ever got started, then, like dummies, we'd fill it back up and she'd down it again. She got all the calories she needed in the glass! (This isn't the case with my son, but he's got a much larger appetite than she ever had.) We started literally measuring out her milk, and limiting juice to one 4 oz serving a day, just to see what would happen. Sure there were some protests and fall-in-the-floor fits over "I WAN'T MORE MILK!!" (to which we'd respond: "If you don't want to eat, you may go to your room...") but she got over it after a couple days and the kid finally started eating some food!
Third, my kids get what we're eating for dinner. Sure, if we're having casserole, I might pull the ingredients out separately before lumping it onto a casserole, but they still get the same thing. There is always at least one thing at the table that they like. If they eat only that one thing and nothing else, that's fine. We don't make it an issue. If they eat NOTHING, that's fine too. They can go to bed hungry. I always tell them "That's fine, maybe there will be something at our next meal that's more appealing to you." If I think hunger will interfere with sleep (which it doesn't ever, but I have my weak moments and give in) I let them have a glass of milk before brushing their teeth. It takes the edge off, but they're sure ravenous by morning, and I make certain to prepare a big breakfast for them!
Get this -- EVERY time they miss a meal (sometimes they can really hold out and skip 2!), when they're hungry, they'll eat ANYTHING at the next meal if I put it in front of them. This happened just this week. My 3 yr old turned her nose up at lunch. She still got the afternoon snack, but I was mindful not to let her make a meal of it. By dinner time, she was pretty hungry and happily ate a huge helping of green beans and chicken without a morsel left on her plate. Same thing happened at lunch one day. She was too busy playing to eat breakfast, and was asking for a second helping of steamed broccoli at lunch.
Now that she's almost 4, she's growing out of the "food battle" stage. It's likely because she's gaining control over other areas of her life (dressing, getting her own toys out, other areas of independence....) so she isn't as compelled to fight for control at the dinner table. With younger kids, whether or not something goes into their mouth is one of the few things they have ultimate control over. They've got you there and they know it! (it's the same as with potty training -- YOU can't do anything about it).
Anyway, I hope all this helps.