You stay because you love him and hope he will change. You stay because you believe him when he says he loves you and wants to marry you. You stay because you love being with someone, and cannot imagine being alone. You stay because at least he loves you and not only will you not find someone else that loves you like he does, the whole dating scene, is not something you want to go through. You stay because even though he has faults, you yourself have faults and if he accepts you, why should you not accept him. You stay because you look at his words, not his actions. No matter what he does, when he says he loves you and wants to "do better," you melt.
I was you. I did not see things clearly, but as I wanted them to be. All would be perfect if only he would change. Why wouldn't he change? He is so beautiful, and I love him so much.
He doesn't change because he doesn't have to. Some men just like a girl at home and one or more outside. You not only do a few necessary things for him, you provide him with an excuse not to fall in love with someone else, to not have to provide someone else with a long term commitment. If you think he is committed to you in any but the most superficial ways, you are kidding yourself. My dad was like that, and I found the one just like him in that aspect. You are not seeing things clearly, even though the universe has shown you over and over. You cannot make him change, by threats, nagging or sweetness. He may change some day, but probably not. In the meantime, you are slowly destroying yourself, your self concept. Already you are having trouble coping. Go another year and you will be a candidate for the loony bin, eating too much, drinking too much, depressed. We have to find an escape from these emotions.
Leave and don't look back (or make him leave). You are the only one who can take care of you - he won't, but most importantly, he can't. He is not capable.
He controls you with his empty apologies. Get out from under that control. You have gotten a ton of answers here, all saying the same thing. You are not thinking clearly if you ignore them.