Foxy, I don't mean to sound patronising at all but you say you have been with him since you were 17... that's quite young to start a serious, long term relationship. Most people do change an awful lot during their 20s, and by the time they reach 30 they realise they are a completely person to the person they were when they were, say, 20.
It also means that you don't really have experience of what it could be like in a loving, respectful relationship. What you have now, to you seems completely normal.
But the problem is, if you stay and don't address the issue it will become more and more normal, and you will increasingly rationalise it all by blaming yourself for being a terrible person.
It isn't normal, or acceptable!
Many, many women meet wonderful partners / husbands in their mid to late 30s and go on to have children as well. But to decide to have children, you need to be in a home environment that will be a safe, nurturing environment for them. You can't decide to have children knowing that they will be born into an abusive environment, being exposed from birth to this poisonous atmosphere.
But I think you know this already.
Do you think this is something you can work out between you through counseling or does one of you need to leave?
If you've been with him since you were 17, you probably feel a bit nervous at the idea of starting out on your own. But you will be amazed at how good you feel when you realise you CAN do it.