Rather than types of collar or harness I think the key thing is to be consistent and never let them succeed in pulling you along or even think that they have succeeded in pulling you along!
I had the problem that most of my walks with Saffi were off lead so "on lead" training was not much of a priority. When we did lead walk I was usually trying to get somewhere and hated the idea of walking in the opposite direction - or taking half an hour to go 100yards etc !
My solution was whenever she pulled against a taut lead, to make sure she wasn't able to move forward. She was stopped until I had moved forward and could slacken the lead again. With a bit of practice I was able to keep a steady walking pace and never let her move forward against a taunt lead. For some months she would dash and stop but she never pulled hard as I didn't let it get her any where.
It is easier to do this with a pup than an older dog btw - I used the technique on a springer once and my arm got really tired very quickly.
I wouldn't say Saffi's a brilliant lead walker (she is now 4!) she won't walk to heal unless you have a treat in your hand for instance
but she is not bad, and if she starts pulling a slight pull back on the lead generally stops her in her tracks. This is quite good enough for my purposes.
I think this method could be useful for those with limited patience like me
or as a backup for those using the stop or stop and turn methods - for times when you really need to get to where you are trying to go!