I have a written contract. It states that I have a 3 month notice period. It looks like I may be offered another job but they would like me to start sooner rather than later.
How can I negotiate down my notice period?
If you wanted to negotiate then you should have done that before signing the contract. The notice period is there to protect both parties (employer and employee) and you can't suddenly say "well, it was good to be protected but it suits me to leave sooner so how about you just let me go."
That said, a lot of companies will let you go earlier as long as you can demonstrate that it won't cost them. Put together a hand-over plan and show them how long it's going to take, then ask them if you can leave at the end of that period.
Failing that, I'm afraid you're going to have to work it or risk being taken to court (and getting a poor reference).
I've been in the situation of having to wait three months for a new employee. I have asked them to try to get that cut down. But if they couldn't and I wanted them then I have waited. Three months comes around surprisingly quickly and finding someone else worth hiring can take a lot longer.
It is likely your new employer will do the same. In the end, do you think they want someone who doesn't live up to their contractual obligations?
If Christmas is a genuine complication, why not give four months' notice and start in January? If they're completely inflexible then ask yourself if you really want to work there. What else do you think they're inflexible about?
I have once done this. I had a 2 month non-standard notice period that we negotiated down to slightly under 4 weeks, of which 3 weeks was basically work time.
I just simply asked by boss if it can be changed and then we arranged a small extra agreement where the change was stated and what were the technical conditions, ie. how many working days and how many non-working days that were taken from my remaining banked flextime (roughly +30 hours) and remaining vacation days (3,5 weeks).
In the end it went smoothly and I got to start in my next job pretty much 1 month after we had a written agreement to start (2 days before I resigned officially). The exact date was agreed after it was confirmed and I signed my new work contract a week later (I was abroad at that time).
TL;DR ask your boss.
You go to your manager and ask them about it. "3 months notice" means the company can force you to be employed with them for another three months. It doesn't mean they have to. You can ask them to accept a shorter notice, and they may accept it.
As an employer, they might consider that someone who has just given three months notice will not be the most motivated and most hard working person. And someone who would like to leave in four weeks and isn't allowed to is even less motivated. On the other hand, they could expect you to do a really good job for say the next four weeks if they allow you to leave earlier.
And then there are places where they don't want you to appear at the workplace once you have given notice. That kind of place would love it if you gave them four weeks notice or none a all because you won't be working during your notice anyway, and that way they don't have to pay you.
So talk to your manager, and see what he thinks about it. But there is the other side, and that is your new company. You should never give notice, and should never talk about notice, until the new contract is signed. So you can't make any promises to the new company. You would have to ask them for a contract that will start three months from now, with the possibility of starting earlier.
All you can do is try to work something out.
This isn't an exact science, so the 3 months is just to cover themselves. Find out what concerns they have and offer to make the necessary effort to address them.