I'd stay with O2 if you can sort out a deal as I my experience they are the best of the Mobile providers
They do a sim only range of contracts that are really cheap or my son has a pay & go where he tops up £10 a month and he gets 100 mins free talk time and unlimited texts
If your wanting a new phone then you need to work out purchase costs of the mobile as you obvoiusly pay for the 'free' phone with higher tariffs on your contract
If you decide to leave O2 and want to keep your numbers just ask for the PAC codes from O2 - you then give these to your new provider and your number is migrated - You will be allocated a temporary number until yours is ported across
Finally - Go with one of the big three i.e, O2, Vodafone or Orange. Don't be tempted by cheap deals on 3 as they are shite no matter what they say. T- mobile are slightly cheaper than the big three but Our corporate contract has been with them for the past 12 months (against my advice) and we are leaving them because of wall to wall problems
Lee