A legally binding contract is when two parties agree, IN GOOD FAITH, to exchange of goods and/or services. If either the client or the contractor is abusing the other party, then the contract has already been broken and the abused party, whether the client or the contractor, should feel free to terminate the agreement.
Some would say that it is the client's job to research an agency before agreeing to any terms; and in such a case, the client is half accountable for a wrongdoing. However, I disagree, due to the fact that some agencies may prey on clients without a savvy business knowledge. Therefore, the client should still be able to seek help, if taken advantage of.
People are always signing contracts, some good and some bad, and there is always a way out of the contract. When a person signs something that they don't really understand, or upon poor advice, there should certainly be a loophole for the contract to be terminated. I think that any contract should be reviewable in court, allowing a judge and jury to decide whether or not it was fair and should be upheld.
If a person is really being abused, it's ok to step in and break the contract, because that upholds principles of decency and civility in our society. It would be a shame if slavery were allowed, for example, because people can knowingly enter into contracts when they are in dire situations. Then they'd have to abide by the contract. It's better to let people restart when they're in an unfair situation.