What we were taught was when they start to pull say "Uh-uh" and immediately turn in the other direction. It looks pretty stupid in public, but I think it helps. Also have treats and praise them when walking nicely, and keep the treats at your side to get them to walk like that.

Sometimes I also do the standing still method like Candy mentioned. I do this when it's too embarassing (or time consuming) to be walking back and forth.

My friend's german shorthair was a MAJOR leash-puller, and she used the halti....it has worked wonders with her dog.