I was tearing my hair out trying to get texturing to work in ES 2.0. After days of struggling, I posted a question to Stackoverflow:
OpenGL ES 2.0 texturing - Stack Overflow
And it turned out that my OpenGL code worked just fine in a test scaffolding, but not in my app. In my app, the texture would just come out black. More details are in the above post and in the comments, no need to repeat them here.
All the OpenGL code is contained in a single UIView subclass (the source to this class is linked from a comment on the above post). The rest of the app is totally stock UIKit stuff.
What could be causing texturing to fail like this? I'm going crazy here.