I'm going to make a crazy suggestion: David Oyelowo from Spooks. But, to be honest, I don't know that much about how Q was characterized in the books.
He only really has one memorable scene in the books (in Dr No), and doesn't have much of a character, as he's a cameo based on a fan and firearms expert (Geoffrey Boothroyd) who had written to Fleming with some suggestions as to Bond's choice of pistol
Speaking of a Dr. got me thinking, I know it's not really in the classic mold, but maybe David Tennant as Q? He's english and I think he appears dorky and smart but also quite quirky. Plus I know he can pull off the sly wit that's neccessary for Q to have.
Chiwetel Ejiofor ("the Operative" from Serenity) - he's got range from deadly serious to slapstick, and could carry the role of a serious tech/armorer who both keeps Bond equipped and safe, and often has his cool tested by Bond's impulsiveness.
Great call on Emily Mortimer for Moneypenny. As for Q, my suggestion is Robert Lindsay http://www.robertlindsay.net/ who played Captain (later Admiral) Pellew in the Horatio Hornblower movies. He can play exasperated very well but also command authority.
Here's an idea (Hitchhiker's Guide fans will recognize this one): Simon Jones. (He played Arthur Dent in the radio and TV series)