To enable pausing in my games, I've always preferred a much simpler method: stop calling Update on everything. For GameComponents, you can set their Enabled properties to false. If you are otherwise manually calling your objects' Update methods, then just don't call them when your game is paused. Much simpler, and as long as you always rely on the GameTime parameter to perform updates in your Update methods, and you aren't doing any updating in your Draw methods, it should work flawlessly.
Previously known as "Rainault".
Twitter -
me,
Jade Vault GamesAnnouncing
ASCII Quest, a Roguelike under development for Xbox LIVE Indie Games