I normally tend to shy away from static ViewModels, because you could would end up extending the lifetime of the Views creating (short-term?) memory leaks. So the way I go about is, either:
1. Have a parent View/ViewModel - now, a parent's data-context normally cascades down to the child Views. This way, your child Views can all share the same ViewModel - if you look at the sample I posted in this
post (http://nroute.codeplex.com/Thread/View.aspx?ThreadId=225598), I created a Wizard parent View/VM and the child Views shared the parents VM.
2. Pass-along the data - one of the things you can do with nRoute is pass-along data whilst navigating as navigation parameters. So I suppose when transitioning from one View to another you can send along the
shared state, this way each view can do it's thing and pass along the shared state. See step 8 in this post (http://www.orktane.com/Blog/post/2010/06/30/Creating-a-Netflix-App-using-nRoute-A-Step-by-Step-Guide.aspx).
3. Shared static resource - one technique I've used elsewhere is that I've create an instance of the shared state as either an application or parent resource. So something like:
<local:MyState x:Key="SharedState" />
That given resource will be available to all your Views.