I think this is a bug in the WPF framework, without going into depths of my program and why I am doing what I am doing, I wrote a simple test application to prove my theory.
For anyone that has the same problem, here is how you can get around it:
public App()
{
// Preserve and temporarily switch shutdown mode
var oldShutdownMode = ShutdownMode;
ShutdownMode = ShutdownMode.OnExplicitShutdown;
var dialog = new Window();
var result = dialog.ShowDialog();
dialog = new Window();
result = dialog.ShowDialog(); // This will show!
// Reset shutdown mode to original value
ShutdownMode = oldShutdownMode;
}