I make quite heavy use of Noah Friedman's escreen package[1] to keep
everything under control. Escreen is pretty similar in spirit to GNU
screen in that it lets you have multiple screens running independently
of each other, each with their own layout.
I generally have one screen for each major task I'm doing--one for Gnus,
one for ERC, one for general editing, one for Common Lisp, etc., and
define key bindings to jump to particular screens. The effect is much
the same as having a whole bunch of frames open, except that keeping it
all inside Emacs makes it work the same way across different platforms.
And for switching between buffers quickly, iswitchb is certainly a fine
choice :o)
Cheers,
Mark
[1] http://ftp.madnom.com/gnu/elisp-archive/misc/escreen.el.gz