A few tips:
1) Your dog is constantly trying to find effective ways to communicate with you what he wants. When he finds that his method is effective, he learns to continue using that method in the future. For example, if you're walking your dog on the sidewalk and he starts dragging you toward a tree, and then you end up at that tree, then you essentially just rewarded your dog for pulling. The right thing to do is either stop in your tracks, keep walking where you had intended to walk, or turn the opposite direction of the object your dog is pulling you towards. The goal here is to convince your dog that pulling is unrewarding.
2) You need to condition your dog to constantly pay attention to where it is that you want to go. One way to do this is to frequently change direction when you're walking. If your dog is paying attention to you, he's not paying attention to other things!
3) Some dogs (including my dog) do much better on their walks if you go the same path every time. My dog gets very excited when we diverge from his normal walk; apparently he thinks the unknown destination must be absolutely amazing. Of course, this is a double-edge sword, because then your dog becomes more inflexible to changes to his routine.
Anyway, I followed these basic steps with my dog (who used to pull so bad that both my wife and I developed shoulder problems), and he completely stopped pulling after just a few weeks. Remember, consistency is key!
Good luck,
Adam