In case anyone interested, unless I'm doing somethign wrong (again), I noticed the black flickering is back again when using kGameAutorotationUIViewController (on both landscape and portrait) under iOS6 only I think. So I have modified the removeStartupFlicker on the main app delegate to run universal:
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_RETINA() (CC_CONTENT_SCALE_FACTOR() == 2)
#define IS_IPHONE5() ([[CCDirector sharedDirector] winSize].width == 568 || [[CCDirector sharedDirector] winSize].height == 568)
- (void) removeStartupFlicker
{
//
// THIS CODE REMOVES THE STARTUP FLICKER
//
//
#if GAME_AUTOROTATION == kGameAutorotationUIViewController
CC_ENABLE_DEFAULT_GL_STATES();
CCDirector *director = [CCDirector sharedDirector];
CGSize size = [director winSize];
CCSprite *sprite;
if (IS_IPAD() && IS_RETINA()) sprite = [CCSprite spriteWithFile:@"Default-Portrait@2x.png"];
else if (IS_IPAD()) sprite = [CCSprite spriteWithFile:@"Default-Portrait.png"];
else if (IS_IPHONE5()) sprite = [CCSprite spriteWithFile:@"Default-568h@2x.png"];
else if (IS_RETINA()) sprite = [CCSprite spriteWithFile:@"Default@2x.png"];
else sprite = [CCSprite spriteWithFile:@"Default.png"];
sprite.position = ccp(size.width/2, size.height/2);
if (size.width > size.height) sprite.rotation = -90;
[sprite visit];
[[director openGLView] swapBuffers];
CC_ENABLE_DEFAULT_GL_STATES();
#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController
}