One word about a slack leash. I've heard it asked, how slack is slack? What if the leash is taut but the dog is only pulling a little bit? To me, it's much easier for the dog to understand what you want if you make a big distinction between taut and slack. Slack means the dog feels nothing but the weight of the leash downward on his collar (ie. feels almost nothing). If the leash is in a straight line, that's not slack. Slack means it's hanging down in a curve, even if it's just a slight curve. If you make this distinction you don't fall into the trap of thinking "well, he's only pulling a little bit, so I'll let him get away with it." Pulling a little bit will probably lead to pulling a lot.
Again, it's important to reiterate that success will not come overnight. It's been said that the length of time it takes to cure a problem behaviour is as long as that behaviour has been going on. I'm not sure that's entirely true in every case, as I think a dog who's been pulling for five years can be successfully taught not to pull in probably less than five months. But in general, the longer a behaviour has been occurring, the longer it will take to change it, as it essentially becomes a habit. And we all know how hard a habit is to break, especially if it is rewarding to perform it!
So in summary, if you allow a dog to pull while walking, it will be rewarded for pulling and continue to pull. The secret is to not let pulling get the dog where it wants to go. The dog only goes where it wants when the leash is slack. If you diligently follow the above exercises, you'll have a dog that you're happy and proud to walk on a leash!