I went from the 4 to 4S to 5 to 5s to 6 to 8 to XR. Early on it was pretty much worth it to upgrade based on the resale value, buying out the remainder of the contract and signing on another 3 year contract here in Canada. I would basically just be paying the $199 u front fee and the resale would cover the cost of buying out the contract. The numbers made sense.
Now, I plan to keep my XR for 4+ years. The upgrades have gotten so incremental it is crazy to buy a new phone yearly. I will probably get a new battery after 2 years.