@bloodycharity,
It is so easy for us to tell you to walk away, but difficult to do when you feel so attached. So I'm going to suggest something just a tad different.
You see, I believe people can change. Now don't get me wrong, I don't believe YOU can change him. But I believe he can make a decision to change. I know you wrote that you two have talked about it and that he gets better for a little while, but then he falls back into his old habits again evidently. So the desire to change seems to be there for him, but old habits die hard.
So, why not sit down again with him and discuss it again and maybe suggest that each day or each time you two get together (you did not mention whether you are living together or if not, how often you see each other) you will spend 30 minutes without outside interference (no tv, no phone calls, etc) talking to each other about your day. Or maybe about something one of you read about that day. Or whatever. Heck, (if living together) maybe the two of you can just hit the kitchen and fix dinner TOGETHER and talk while you do so. If you can get him in the habit, daily, of doing something like this, then maybe it will help him to change.
Of course, like Pavlov's dog, you may need to show him how much you appreciate him doing this. (And no, it does not have to mean extra sex or whatever. But it could.) Give him extra hugs. Heck, maybe in the middle of cooking dinner on a night he is being especially conversant, you can decide the kitchen is a bit hot and take off your top. You know, little things like that. (That would work to encourage me at my house, lol)
Anyway, you get the idea. In the long run, if he does not change, you will have to realize that this is just the way he is and decide whether this is something you wish to deal with long term. If not, then walking away will be the best thing for you. Love is fantastic, but Love + Happiness is even better. And we all deserve both.
Good luck.