I've always liked the if-you-don't-like-what-they're-doing-give-them-something-else-to-do approach suggested in the above two posts. I'll also pass along a tip from the trainer in our current obedience class. She says to pre-arrange a jumping session by coming in at a door that has secure space on both sides. Not a door open to the outside, but one coming in from a garage or secure porch, for example. When the dog starts jumping on you, say your one "NO!" and instantly take them by the collar and put them on the other side of the door. After a few seconds of quiet, let them back with you. If they start jumping again, repeat.
She says what most dogs want from jumping is attention, and putting a door in between you takes the withdrawal of attention one step further than turning your back. She says it has never taken her more than a 5 times to get a dog trained this way. Although you may have to train the dog that it's not just that one space, but ALL spaces and with ALL people. A leash and a little provocation to jump will help with the different spaces training.