DD was a horror but now (nearly 5) she's a lot better, largely I think to having school dinners, as she has now eaten stuff with her classmates that she would turn her nose up at when I cooked (ie mince).
I always let her get down if she says she's not hungry any more as I don't see the point of clean plates nor in forcing 'just a few more mouthfuls' on her (providing of course she's been eating all parts of the meal, which generally, she does) - that, to me at least, is a surefire way of ruining a child's natural saiety mechanisms and putting them on the road to trouble with overeating in later years (I speak from experience...)
DD knows that if she gets hungry later there will be cheese or fruit, possibly a yoghurt if there are any in, and that's her lot. She rarely wants it, though, so I've come to relax over it and let her judge when she's had enough.
I won't cook a second meal, but nor would I make a child sit at the table until a meal was finished or punish them by sending them to bed. I used to get in a right state with DD when she was younger and much, much fussier (6 months on bread and butter, anyone?), but then thanks to advice on here I have become very relaxed about it.
I see some have said they don't like the waste of food, but it's as big a waste giving your child calories it doesn't want/need as it is to scrape it into the bin. I know this isn't easy to rationalise when you've spent an hour slaving over the dinner, but it's what I try to tell myself!