I think that the mechanism I suggested elsewhere would handle this best: each tab's complete state (DOM, JavaScript &c.) should be marshalled to disk at quit (and checkpointed periodically, in case of crashes); on startup, all tabs are loaded and their DOM & JavaScript contexts restored. If a tab's context had it set to update periodically, then that periodic-update context would be restored; if not, then the remote server would never be contacted until and unless the user hits reload.
This seems so obviously correct to me that I wonder what I'm missing.
The VM state isn't that easy when you remember that JS can keep open sockets to other things, can launch processes, etc.
Sure, you could find a way to serialize it, but that'd be a lot harder — you can't hust go back to halfway the middle of receiving something through a socket.