I always buy my phones outright. Personal preference.
Then I offer my willingness to use the service to whoever has the best deal. That deal will be lower than if you get a "free" phone. Free phones are not free, they are built into your monthly plan.
If my carrier decides to goose me then I am free to tell them where the bus leaves the station and go with somebody else who has a better deal. No cancellation fees, no contracts or phones to pay out, nothing.
I just found a good deal at Koodo for 45 bucks a month. So I just simply switched to get away from my $85. plan with Telus. Easy, I am in the drivers seat.