I use multiple wallet.dat files with the same block chain data. (By "block chain data" I mean all the data in the .bitcoin directory other than the wallet.) Apparently, this method does not work perfectly with the standard client. I tried sending BTC from one wallet to another, by switching the wallet file, and the BTC never showed up in the new wallet. However, it showed up on block explorer, so I knew the transaction was successful. So I deleted the block chain data and downloaded it again, and then the BTC showed up in the new wallet.
Lesson learned: If you use more than one wallet, it appears to be necessary to keep block chain data separately for each wallet, otherwise your transactions might not show up.