This seems like a reasonable stance to me. The carrier wants to recoup its money so they can continue to subsidize cell phones to people, and if you have a cell phone you like, you should be able to unlock it and take it to a different carrier after you have met your obligations.
According to PC Mag, AT&T has come out and in favor of this approach themselves, or so it seems. Like so many things, the remaining problems are in the details.
Joan Marsh, a vice president at AT&T wrote:
As we make clear on our website, if we have the unlock code or can reasonably get it from the manufacturer, AT&T currently will unlock a device for any customer whose account has been active for at least 60 days; whose account is in good standing and has no unpaid balance; and who has fulfilled his or her service agreement commitment.
But what about the people that have fulfilled their contract by paying an early termination fee? The fee has gone up in recent years to cover the cost of the more expensive phones just in case someone decides to end their contract in this way. AT&T should still be getting their money, but will they still unlock the phone that you paid for? I don't know, but I doubt they have any reason to go out of their way to help an ex-customer.
So I suspect that if you don't purchase an unlocked phone on your own and take it to the phone company, you will be taken advantage of by any company you sign a contract with. While this article was specifically talking about AT&T, the other carriers aren't any different in their approach.
Verizon, meanwhile, will also unlock phones after 60 days provided your account is in good standing, while Sprint will make you wait 90 days, and T-Mobile has a 40-day policy.
I remember when Google started selling their phones already unlocked without any carrier subsidies. I thought they were crazy at the time; now, I am beginning to see them as the only way forward without being at the legal mercy of the phone carrier of your choice.