Possible reason #1 (IMO most likely): duplicated geometry. I.e. in your scene, you're rendering 2 boxes with the exact same coordinates, one is gray, another one is textured.
Possible reason #2: wrong mipmaps. I.e. you've specified e.g. GL_NEAREST_MIPMAP_NEAREST filtering, but you've forgot to load/generate all the mipmap levels of your texture.
Possible reason #3: your render target is 8 bits per pixel.