Our new game library is extensively multithreaded but only in very specific bits where it was possible to do without any synchronization and dependency. That was reasonably hard to do as it was and a pain to debug. It's realised a very significant performance gain though, so it was worth it for us.
The bits we multithreaded were processing sprite animations, sorting sprites into the correct rendering order, writing sprite data out to VBOs, processing emitters, and processing particles; all of those things can be easily multithreaded without synchronization or effects on other parts of the game. That's where most of our CPU time goes.
This is for dealing with >10k moving entities and >50k sprites though. Not many games really need those sorts of numbers.