Mozilla.org has a good way to handle this. There is a "sheriff" -- more often than not, this is an entire IRC channel rather than an individual -- and the sheriff can close the tree for checking in if they feel like the work is not moving in the right direction. For instance, the tree might be closed to land a particularly hairy patch, or it might be closed except for patches addressing a certain issue, or patches which fix a given bug or set of bugs. And if the tree is "on fire", if it cannot be built or doesn't pass automated regression tests, then everybody who checked in recently is "on the hook" for fixing it.
I know this doesn't work for Linux because people will just work off their private trees forever and never send patches to Linus if the tree were really closed. I just wanted to pass along the management process used by a different, equally large project.