Well, I can only say that if I loved someone that was doing things that were detrimental to my well being, then I would not enable them to be a shit and I would leave them and I wouldn't return to them until it was proven, without a doubt that they had changed and just using words to say you've changed would NEVER be enough.
You don't say what the problem was other than that she wants you to change what is it she wants changed and why has it taken you 4 years of doing the same thing before you were willing to change it? Can you get some kind of therapy or classes to help you with this that would prove to her through action that you are finally serious about the change?
Anyway, I'm thinking your relationship is finished and you'd do best to take those classes or that therapy for YOURSELF and not her so that you change for good (and not just 'say' you are going to) so that in your next relationship, the same problems do not crop up.
My advice.. tell her that its a clean break and breakup so that you both can move on properly, take time to learn to be the best you that you can be. Tell her she can call you in six months and if you're still single you'll consider dating her again then.
“The willingness to accept responsibility for one’s own life is the source from which self-respect springs.” ~Joan Didion