From memory, it goes something like this for technical positions:
Initial telephone call with a HR person, where you are asked to rank yourself on a scale of 0 to 10 in a number of technical areas. Some simple technical questions, where the HR person has the answer in front of them, with ample remarks from Google engineers to help them judge if you completely failed or had a clue.
3 telephone calls with Google engineers, where you're asked to solve technical problems and questions over the phone. Some of this may involve programming "live" in a Google Doc where the interviewer is connected to.
You're flow in to a Google location. (You don't get to choose which one) 5 Live interviews over 45 minutes each where you're asked to solve technical problems on a blackboard. Most of them aren't extremely difficult, but they cover a wide enough range of topics (and the interviewers go in depth on each one of them) so you should expect to struggle with some of them. During the break at noon you're shown all the perks of the relevant Google office.
You're flown home. You may or may not get an additional phone interviews. At the end, the HR person guiding the process subjects your file to a hiring committee. After a week or two they call you back and tell you if you made it or not.
Sounds about correct that the entire process takes 3 months. The time in between phone interviews takes a while, you need to find mutual scheduling for being flow in, etc.