I think you need to ask yourself how much longer you're willing to wait for him to change. Going to counseling is great but it can often take years before real change happens. Can you live with this possibility? Also, you mentioned that you think he has ADHD, would he be willing to see a psychiatrist and possibly get on medication? It sounds like the ADHD is a major problem for him since it makes him feel really frustrated and impatient and then he spirals out of control from there. If he had medication that regulates his mood then there probably wont be spiraling much, if at all. Also, if he's more stable then it'll be easier for him to work on his issues with a counselor. I'm just putting ideas out there in case any of it helps.
It could very well be this aggressive behavior is part of who he is. If you dont want to put up with it anymore you dont have to. No one is making you victimize yourself for the support of someone else. It sounds like you're his punching bag, the person he unloads on because he thinks you'll never leave him. Supporting this behavior will not help him, in fact, it will only make it easier for him to continue to act this way. It sounds like maybe the reason the progress is so slow is because he doesnt truly want to change, he is only doing as little as he can get away with so you dont leave him. I'm not sure if thats the case but it sounds like its a good possibility. Bottom line is: you dont need to put up with this abuse, it doesnt make you a good person, only a victim. You deserve to be treated with respect ALL of the time. Your son deserves to be in an environment that doesnt include violence. Just because he seems happy now doesnt mean he's not internaizing what he sees and hears. He could very well grow up and treat women the way his dad treats you because thats what he has learned.