I used to walk my dogs w/ a head harness - gentle leader/halti. It worked pretty good but they hated it. One of my girls always ended up w/ a bloody nose because she would scrape it against the sidewalk trying to get it off. Another thing I noticed is it didnt TEACH them how to walk on the leash, it just provided more control in the short term.
After consulting w/ a few trainers they all agreed on one thing - they need to LEARN how to walk on the leash properly. The best and fastest results came from using a prong collar.
I was horrified. It looked so mean, so vicious, how could I put that on my baby girls? The trainer brought one to my house for me try it out. He wrapped it around MY arm and pulled - with great force. It didn't hurt. He explained to me that in dog behavior dogs correct each other by biting the neck and/or chest. The prong collar mimics that behavior so the dog reacts more natural.
How I got my dogs to heel with a leash in 2 hours:
When fitting the prong collar it should hang off the neck loosely. The collar should have no pressure unless the dog pulls or you correct the dog. You can add links or take links away, you can even add rubber tips.
Put your dog in sit on your left. Be consistent w/ the side your dog is on. This will help when you walk your dog w/o the leash (which is I'll explain later).
When you're ready to walk give the command "heel, let's go, walk" whatever you'd like to use.
Walk at a brisk pace. At first be consistent.
When your dog starts pulling, turn abruptly in the opposite direction and give a correction. Letting your dog pull on the prong collar defeats the purpose. Make sure it stays loose around his neck. A correction is a quick tug. Do not yank, pull, or drag - just a quick tug, and use some force. Not enough to hurt the dog but enough to correct the behavior.
DO NOT stop walking once you've turned. Keep walking at a brisk pace, let your dog catch up to you. If he starts pulling again turn and give the correction.
After a few minutes, stop and put your dog in sit, then start again. Once your dog gets the hang of it - which is usually very quickly) start varying your pace.
Use the command to remind your dog w/o using the correction to stay at your side.
The leash should be very loose. If you're tense the dog will pick up on that and react. Let the leash have a large loop, give your dog room to pull so you have the opportunity to correct the behavior.
Now.. when your dog is consistent w/ following the command and stays at your side, give more and more slack. Eventually (in a control environment) drop the leash. Continue to use the command or other noises for correction.
With and w/o the leash test your dog, turn around w/o warning, go to the right, stop, etc. This will increase the proficiency of the heel.
Soon you won't even need a leash.. OR the prong collar. Once the dog is trained onto the command you can discard the prong collar and switch back to a regular flat collar.
***NOTE---- Always always reward for good behavior. As your dog performs to what you want treat, pet, play, or give verbal praise. You will see results much faster!
Good Luck