Moving file IO to a separate thread can be a big win.
Moving networking to a separate thread can be a win, but not usually big.
The audio engine is internally multithreaded, so you won't gain much if anything from doing this yourself.
The biggest issue with threading is that the XNA Framework uses fairly coarse locks to protect itself against reentrancy: it basically has one critical section per area of functionality (graphics, sound, networking, etc). So if you have a background thread in the middle of some slow operation that takes out a lock (eg. SetData on a large texture), and the foreground thread attempts to use that same area of the framework at the same time, the two threads become serialized. So if you move networking to a thread, you want to move all networking: it's not a great idea to eg. call NetworkSession.Update on a worker thread, but then have the main thread sending packets at the same time (this will work fine, you just won't get any actual parallelism).
XNA Framework Developer -
blog -
homepage