wow, that could be MY boyfriend speaking! Those are the kind of explanations i have had when his anger just turns to self-loathing and regret. And then it sounds so rational, but the behaviour doesn't ever seem to change. i also believe that that kind of behaviour CAN change - i know i've worked really hard at some aspects of my life and my behaviour that i wasn't happy with, and they've changed for the better. There are no real excuses for letting the pattern continue, instead it's a case of not rising to the challenge. Thats not to say that the challenge isn't a huge one - in my experience, anger like this stems from deep-rooted insecurities and paranoia - but not giving it a try i think is a cop-out.
But the most important thing is that YOU are making the choice to let yourself be treated in this way. Why is this? And why would HE ever change if he always gets away with it? It's difficult, but the most important step forward I've made in my relationship with an angry person is to just take a step back - don't let yourself get emotionally worked up or upset, and don't pander to it, indulge it or apologise for it. My boyfriend now doesn't seem to get quite as much satisfaction as he did before when he directs his anger towards me.
I have to say i don't really know what the answer is to this question, despite having spent three years trying to work it out! Your boyfriend may or may not change, but i suppose my advice to you is to really make sure that YOU are comfortable in the relationship as it stands. You say that it is ruining your happiness, are you sure that that's a sacrifice you want to make - it's quite a big one. But i hope it all works out, i understand the huge contradiction, of loving the happy person, but hating having to deal with the nastier side. Just remember that your happiness should be as much of a concern to him that his anger is to you.