I am both tenant and landlord, and have never had either situation occur. I've been lucky with all my LL's in the past, and insofar as "final two months rent" is concerned, have also been lucky with previous tenants. (Lots of things appear to have broken under the current tenant, with repairs required left right and centre - but he's yet to leave so can't comment on the final two months).
If "we" (H.K. in general ; no specific person in mind) go around bashing Mainland China all the time for its lack of sophistication and rule of law, it's highly hypocritical for our own solution to the deposit problem to be "ditch the final two months rent". That's NOT how it should work, it's not how it's laid out in the contract, and it's certainly not the sort of moral / legal / civic behaviour we should be encouraging.
Tenants have a contractual obligation to pay rent, and per most tenancy templates used here, landlords have the right to seek recovery of such rent in addition to any associated costs of that recovery. (This whole discussion makes me think I should add an interest rate clause for future contracts!). Not paying rent would be a breach and grounds for not returning the deposit - but I still have a right to recover the rent (and associated costs), even if i'll return it back to you again afterwards. Want to pay ball? Bring it on.
If you are a good tenant and the LL screws you over the deposit, then I echo those who suggested the Small Claims Tribunal. If someone murders your friend, you let them be prosecuted, and wait for the courts to (eventually) pass a sentence. The process may be long and painful, but that's life. It doesn't give you the right to just shoot the guy yourself. Or even better, shoot him in advance.
This isn't the Minority Report.