I needed to change this behaviour, and handily SimpleIoc provides a way to do this at the point of registration.

Instead of the default :

SimpleIoc.Default.Register<MainViewModel>();

simply use:

SimpleIoc.Default.Register<MainViewModel>(true);

This sets the createInstanceImmediately parameter in the Register method, meaning that the ViewModel is now Eagerly Instantiated and available in the ServiceLocator, or notably in our case, our messages have been subscribed to via the constructors at this point.