my dog has similar problems, though nowhere near as extreme. they were bad enough, however, that we hired a private trainer to help us out. here's what we learned:
make him 'work' for everything. that means sitting before going out, eating, getting leashed, whatever you can think of.
be first. go through doorways first. eat first.
feed him by hand - make him sit and eat slowly. I keep a bunch of kibble balled in my fist and won't let him eat till he just sit and look at it without trying to go for it.
there's more, but it depends on how big the problem is. the next step is doing 'leave it' exercises so that the dog will let things happen without needing to act on them.
and even though the hand-feeding might sound like a small deal, I think it made some of the biggest difference.
hope this helps.