I took a bunch of lunge line lessons a few years ago and it really helped me with my balance issues, plus they're a lot of fun. You really need a horse that lunges well and is steady on the lunge line because then you can focus on your student and not on keeping the horse steay or going.
If you go with lunge lessons take away the sudents reins and then he can do things like holding his arms out to his sides to try and show his gripping the horn isn't required. Toy can do things like having his hold his legs out to his sides (at a walk and at the trot) - so have him hold one leg out away from the saddle and then the other leg for a few strides and then both legs, this will help him sit deeper and get a better balance on his seat bones. On the line you could maybe have him close his eyes and to feel the motion of the horse. Have him shout out the diagnals to you (does he post? I know it's harder in a western saddle but teaching him that could be helpful).
There are loads of things you can do on the lunge line. I liked one exercise when my instuctor would ask me to reach back and touch behind the saddle with each hand, that might help bring his shoulders back.
You could also teach him to stop the horse on the lunge line (thats a big confience booster!). My instructor would make me blow out like I was blowing out a candle, it makes the stomach muscles contact and is an essential part of a half halt. I learned to do this on a draft horse I was lunged on and I always had the hardest time getting him to "feel" me as i'm so small, and when I finally got him to stop just by using my seat it was a great feeling.
I know you said that he seems to get it and then goes right back to his bad habits, try and remember that bad habits are easy to fall back into and it does take a long time to relearn good habits, just keep him at it and correct him and help him along the way by suggesting new things and ways to keep it fun and new. If he feels like your just repeating yourself and he's repeating himself he'll get discouraged.
Hope this helps.