Schools will let you out of a contract but usually you have to be sneaky about it. It used to be that the easiest way was pulling the old "sorry I have to go back to my home country, family emergency" or somesuch and then just doing a Hong Kong visa run.
Hong Kong visa run is not as reliable an option as it once was (still might be a possibility though) so in that case you're really at your employers mercy. Obviously they're not going to want to let you go early because hiring and transitioning to another FT in the middle of the semester is a PITA. It can help if you can find a replacement who is decent and show up with this person ready to go. Schools mostly do not want to be left with classes that need teaching and no teacher to teach them.
If they are breaking their contract you could always try threats "you are breaking your contract and I'm going to call up SAFEA unless you just let me go nicely." Problem is, if you actually have to follow through on your threat, you might not have a lot of luck. Some schools will let you go though if they get the idea that you're a "troublemaker," that is, keeping you around is likely to be a liability rather than an asset. If you're making a lot of noise with the other teachers, fermenting revolt, complaining a lot, they might just cut their losses. This can be a viable strategy, but you a risk that if you piss them off thoroughly enough, they might not be so forthcoming with your release letter.
If you have another job offer, I would ask them what their options are, vias wise, if your school won't release you. Is a Hong Kong run viable? Could you take a quick trip back home for your visa?I mean, you're never really, or never should be, stuck in a bad situation in China. You always have options, they just might not always be the most convenient or attractive. And of course, it goes without saying, that unless the situation is really intolerable you usually should stick with your contract because aside from simplifying things considerably, it is usually just not very nice to leave a school in the lurch.