I do the 'what would Supernanny do?' thing (a variation on the invisible TV crew, I imagine).
I follow through on threats. It's really hard the first few times but gets easier very quickly once they really believe that you're not going to give in.
I avoid their triggers, ie. I make sure they're not tired or hungry if I want something from them, like being ready on time. Also, routine routine routine (not a timetable, just a pattern of what happens first, then what happens after that) - it really helps. Because they know what comes next, they sometimes start doing it almost without me having to nag.
I avoid my triggers too - tiredness is a huge problem for me. When I'm tired (which, funnily enough, happens quite a lot!) I will be far less patient with them. But if I do lose my rag (which, alas, I do), I try to apologise afterwards and explain why. I was awful with DD1 while pregnant with DD2. I had no patience at all and used to hate myself for shouting at her and began to think that I was a terrible mum. Then I realised why (because I was exhausted) so tried to explain that to her. We had a couple of lovely conversations about the baby growing and joked about why that was making mummy tired and cross. I think she was actually quite scared when I shouted, so making a bit of a joke of it lightened it for both of us.
That reminds me, teasing/joking helps too. If you're about to lose your patience, say something silly. eg. if they won't eat their supper, say "well, if you don't want pasta, shall we have roast crocodile instead?" or "if you're not going to eat it, shall I feed it to the washing machine?" That sort of thing almost always raises a "Don't be silly, mummy" from DD1, and by the time I've done two or three ridiculous suggestions, she's forgotten why she was refusing the food and just gets on with it. It's good for you too - it's incredibly hard to be angry if you're being silly!
Good luck - stick with it, it does get easier to be patient, honestly!