If you know in your heart the problems can't be fixed or aren't going to change, then you have to leave. Or you both will be miserable forever. It is better to have loved then lost than to never have loved at all!!
I would try to fix it, everybody has problems. But there are two things I've been told: when you love someone, you shouldn't have to "fix" things, they should just "work"; when you love someone (truly love), then you should do whatever it takes to be with them. I realize they're two conflicting ideas about love but maybe one of them will help you make your choice.
I've also thought about this. My relationship has plenty of problems but if you both agree to work them out wait a few weeks to see if things change. If someone really loves you they'll do everything they can to have you