You can upgrade with O2 early depending on what type of customer you are. If you log in to your account on the O2 website you will see in your bill summary what type of customer you are. I'm a Platimum customer so i get to upgrade 6 months early at no extra cost. It all works off the amount you spend per year. It basically works like this
Silver - 1 Month early
Gold - 3 Months early
Platinum - 6 Months early
I've only got 3 months left on my contract with O2 but i may hold off till April next year before getting a new contract as i will be moving jobs some time between Apr & Aug so need to see where im going before i get a Contract.
I'll still be getting the iPhone 4S/5/HD/iJobs or whatever they call it though