I think you need to get him out of your life no matter how hard it is. He's not good enough for you, and you've said so yourself. You will always end up unhappy but at least if you leave him, you will eventually wind up happier. He has serious issues he needs to work on, and you can't help in. They are personal, addiction and respect issues that he needs to work on himself. If he sees to that and tends to them, then maybe sometime in the future he will be ready to be in a relationship and treat you the way you deserve to be treated. But as for right now, this relationship doesn't benefit you in anyway and he is not treating you like a human. If he can't see that he's hurting you now, he will never stop.