You need to initialize the texture with glteximage2d(optionally with data set to nil) before you can call glcopyteximage2d.

Looking at your other code everything else seems to look fine