Bitcoin wallet directory
The most straightforward way to do this with Bitcoin-Qt/bitcoind (at this moment) is to swap the wallet.dat in your bitcoin data directory when the client is not running.
Another method (if you're on a UNIX-ish OS) is to create multiple data directories, then symbolic link (ln -s) the blocks and chainstate directories (not database) inside your datadirs to a common data dir.
mkdir ~/.bitcoin-alt # new wallet directory cd ~/.bitcoin-alt ln -s ~/.bitcoin/blocks ~/.bitcoin/chainstate . # launch new wallet bitcoin-qt -datadir=$HOME/.bitcoin-alt
Then you can leave the wallet.dat alone. When launching you can specify a -datadir based on the wallet that you want to use, and it will share the blockchain dirs.
However even with this solution cannot run two bitcoind/bitcoin-qt instances at the same time sharing the block chain! This is currently not possible and will result in corruption if you try.