I don't agree that just because a girl cheats she will always cheat. I have only ever cheated twice and even though I felt I had very valid reasons at the time I felt terribly guilty about it afterwards.
One guy had cheated on me repeatedly (and admitted it) and once it was with a girl who was VERY underage in my own house.

The guy I cheated on him with had been pursuing me actively for weeks. I had turned him down repeatedly despite being cheated on by the first guy multiple times in that period. Finally, I gave in. And yes, I felt miserable afterwards. Truth be told, I really loved the first guy. I'd lost my virginity to him. I came home from the first date with the "other guy" and immediately broke up with the first. I didn't sleep with the "other guy" by the way. It was just a relatively innocent date ending with a kiss, but it was bad enough to make me feel wretched. He cried like a baby when I told him I'd been on a date and I was breaking up with him. He tried to apologize for having cheated on me, telling me he knew how it felt now and he'd never do it again. But I just couldn't let myself believe him after he kept doing it over and over even after seeing ME cry so often.
The other guy was abusive. I had tried to leave him multiple times, but he would cry and beg me to forgive him and I have such a weak, romantic heart. I was a sucker. I fell for it every time. I was miserable, but I just couldn't stay away because he could be so sweet and kind when times were good. I was young and stupid and I kept letting it happen. Finally I had enough. His best friend, a guy I'd dated long before I met the boyfriend, came over one night when my boyfriend wasn't home and made a pass at me. I had never slept with the guy when we dated before, and I guess I was looking for a shoulder to cry on. Again, I felt absolutely horrible afterwards, so guilty I couldn't stand it. I made a committment to myself to never, ever cheat again. That if I was ever that miserable again, I would leave instead of cheating. He never found out, but I still feel so bad about how he would have felt if he did, even as much as he had hurt ME.
I was under 20 years old both times. I am now 28 and I haven't cheated on anyone in over 8 years. And I never will. I will always remember how guilty I felt and I could never, ever hurt anyone like that again.
If you really love this girl, I wouldn't give up on her. I don't think she would cheat on you for nothing. I mean, I don't know her, but from what you've told me she doesn't sound like the typical cheater, she sounds more like the type that cheats when she's hurt or desperate, but love like that isn't worth giving up on. I'd cool it for a while, call her occasionally just to talk to her and see how she's doing, but don't beg and don't pressure her, and sooner or later she might come around. If not, then at least you know you're there for her. You sound like a great guy, she'd have to be crazy to give you up with all the crazies out there these days. Finding a decent guy is literally like the proverbial needle in a haystack.