I agree with the use of a no-pull type harness. The bottom line is that pulling must not work for your dog. Pulling and walking forward can not go together. EVER. Before he gets to the end of the leash, if he's going out ahead of you, make a turn. Reinforce heavily with a yummy, but tiny treat each time he's paying attention and comes along side you. Keep your leash about the same length so he gets to know how far he can go before something's going to happen, like a turn or a stop. Do frequent sits upon stopping. Keep him engaged with you. You can use a toy too to keep him interested in working with you. Like it was said, low distractions for a while when you practice loose leash walking and then introduce a mild distractor...add them in gradually as he is able to concentrate with small distractions. Lots of turns, stops, you can go back the same path you just took when he's about to hit the end of the leash. Vary what you do so he doesn't know what's coming next. Just make sure you never ever take another step when he makes tension in the leash. In other words, he has to learn that a taut leash doesn't work to walk, but a loose leash does. And something that most people don't do that is very important is to reinforce FREQUENTLY, like every other step at first while he IS keeping the leash loose and IS staying along side you. If you reinforce her while he's next to you with her shoulder instead of when he's way out ahead of you, that is better. He'll be better able to pay attention and see where you're going next.
The more reinforcing he gets when she's in a good position, the quicker he'll learn. The reinforcers are yummy treats and the ability to continue walking. Those things that he likes happen for him under certain circumstances. At first he'll be guessing what the circumstances are. He won't know why he's getting them until he's had loads of repitition. So it's important to be very consistent. If you slack off even one step here and one there and let him pull, that pulling behavior will get stronger.
I use a word when I'm going to give permission to the dog to sniff or pee and wander away from me a little bit. I say, "go sniff." But of course, at first, when the dog is learning, he doesn't know what that means, so I loosen up the leash more, take the dog to a likely bush or spot and when he sticks his nose down on the ground or pulls a little on the leash, I give the cue, "go sniff." Later, once the dog has tied the cue to the behavior, you can use the cue before the behavior....to tell the dog that now it's okay to do your thing and you don't have to walk nicely for a minute or so. Then when it's time to resume walking nicely, I use, "let's go." You can use whatever cues you want, just make them consistent. Don't let your dog pull you over when he decides he wants to go sniff or you'll be forever stopping and starting over and over a million times while you walk. You choose some times along the way for him to go sniff.
When you're practicing loose leash walking in a distraction free environment and even later when you're practicing with some distractions, switch things up. One time use a harness, another the collar. After some practice, your dog probably won't be pulling so much and won't hurt his throat. You can teach him to walk nicely, regardless of what equipment he has. If you have an area which is fenced, you can practice with nothing on him too. The more variables you throw in, the more he'll learn to generalize the behavior.