Ive only skimmed the thread but Ive noticed a few things.
Everything you've pointed out as a problem with her, you've created an excuse for those problems (usually yourself) . She's an adult and makes her own decisions.
If she really wants to be with you she would be with you. Period, end of story.
Either she does care about you and doesn't have the balls to break it off permanently or she wants to keep you on a leash (which you are handing to her) while she runs around. Or she worries about making her parents happy rather than the person she may want to spend her LIFE with so she can come back to you later. Either of which is pissing all over any respect she should have for someone she "supposedly" loves.
Ive been there and you never realize how blind/dumb you are in the situation until you've removed yourself from it and moved on.
My advice to you would be to have one last sit down with her and tell her how you feel about EVERYTHING. Her, her parents, how you feel about her etc. Then let her know you're breaking it off. Completely. And that its out of your control.
If she wants to be with you, she will. She'll find you and you'll have a sappy movie moment of realizing you both want to be with each other and you'll know she's willing to fight for you and she WILL CHANGE for you.
The absolute WORST thing you can do is keeping up the puppy dog following / contact with her. You're only devaluing your own ego in her eyes. She would actually be impressed if you broke it off. Either she will come looking for you or she will not. Either way would be a win for you.
If she's not willing to fight for you now, then what other times in the future will she not stand by you?
Put the ball in her court and walk away and don't look back. If she doesn't follow, she's not worth your time anyway.
Stop groveling and selling yourself short. Stand up for the good person you know you are and stop buying into this so-called "constant constructive criticism" BS. If she really loves you she would want to lift you up, not beat you down...