Dua Anjing said:
...If I buy a car or a tv or a house and I default on payment the bank doesn't say "oh well the customer is always right" they say "you have a legal obligation that you have not fulfilled we are taking our stuff back", shouldn't we have some form of protection ?....
You do have EXACTLY that same form of protection.
When you default on a mortgage, your doors don't automatically lock and hold you hostage until you pay. Likewise, if you default on a car loan, the engine doesn't just shut off when you're going down the highway and lock the doors. When loans go into default, they have to go through legal methods to get either payment or return of the collateral.
Likewise, a wise contract for a programmer would provide such LEGAL provisions. Try to work with the company first for payment, then move into the legal system if that fails.
Putting a time bomb into a program, in my opinion, is either extortion or black-mail, unless the contract is very clearly written (and accepted!) to explain its cause, its operation, and its remedy.
I've been on both sides of this discussion. Previously, I was a SI and we had these discussions. Now, I'm your customer. We honor our contracts -- if you do the job, you will get paid. Shoot, we've even paid companies that didn't finish the job -- paid them for their time and what they had in the project -- then paid someone else to finish the job.
But in our T&C we also establish the right to withhold a final payment until the project is completed to our satisfaction. And that is based upon a predefined project scope. Sometimes that scope is defined in writing, sometimes it's verbal -- depends on the size of the job. But, again, that's something that's discussed prior to the contract.