I have never witnessed a painless contract termination for any host that isn't small/shared/throwaway. We're not talking the $100-200/mo stuff here.
I've worked both in the hosting industry, and (now) from the outside as an integrator/VAR sort of fella. You have so many things that come into play - it's amazing how childish techs and owners truly are.
Things I've witnessed (recently, within the last year or two):
- Host A and Host B have each other's bandwidth shaped down to 1mbit/s because they're fighting between each other.
- Host who has registered domains for client, in client's name, refuses to transfer from their self-branded eNom to new host at customer request.
- Host notices archival process on server, so "preemptively" locks account and holds hostage - when no bill is overdue, demanding a pre-payment for possible bandwidth commit overages.
At this point, I always make sure I have a (semi-)current snapshot of everything, and if possible, an external slave for every DB before I migrate shit.