Is it common and acceptable for a postdoc to leave before contract ends?
Usually, a postdoc is a normal contract between an employer and an employee, and as such, terminating it earlier than its date depends on the contract and/or the country. It should be normally specified on the contract, otherwise the laws of the country should apply. For instance, in the UK, I have had a notice of 1 month, in Italy, it was 3 months.  

It is normally acceptable for a postdoc to leave before the end of the contract, although it depends on the situation. If the employer does not provide any guarantee for further employment, and if the postdoc has found another offer, starting earlier than the end of the current contract, then that's the rule of the game. If the postdoc has found a much better offer (for instance, a permanent position), then that's also the rule of the game. If personal reasons are involved (going with a partner, going back to home country, etc), that's quite fair. 

By acceptable, I mean that the employer should normally not make any problem (assuming the legal obligations are fulfilled), and might even be supportive in the end of the contract. A case that might not be acceptable is to leave in the middle of a contract, breaking some work commitment (e.g., an experiment to run) for a reason that might not appear very strong. But in the end, it depends a lot on the relationship between the postdoc and the employer. The point to remember is that Academia is a small world, and that in general, it is worth keeping good relationship with former employers. In doubt, talk with your current employer, or with a mentor at the place you're working at to know what the rule normally is.