This may or may not be the cause, but it's certainly wrong to call this method yourself:
[gameOver didMoveToView:self.view];
The didMoveToView:
method is sent to the scene by the SKView when you present the scene. That means this method will actually run twice.
Also verify that your scenes are deallocating properly by implementing:
-(void) dealloc
{
NSLog(@"dealloc: %@", self);
}
Watch for the log or set a breakpoint to confirm the scene deallocates. If it isn't, check for memory leaks and retain cycles.