Well, this is a British thread, sarcasm's to be expected 😉
You're not paying the unsubsidised price for the 3GS. If you choose to sign up to another contract you once again pay a subsidised price for the phone. The only 3GS price that is unsubsidised is the price of the PAYG phone.
But what everyone who doesn't agree with you is saying is that this is not the contract you agreed to, therefore O2 is not in anyway obliged to provide this. Additionally, I haven't ever heard of another provider going down this route either (feel free to correct me if I'm wrong, just personal experience).
It makes bad business sense, you signed their contract therefore they can make you honour the monthly payment. Nothing in the contract says they'll give you the option to buy out the contract at only the cost of the remaining subsidy. There are arguments that they will lose customers in the long run through this, yes, but the fact remains that you are not entitled to anything. If you don't like it you shouldn't have signed the contract.