From the link I quoted above, it can be checked that your graphics card supports rectangle textures. If it is not the case (you may check by the
LWJGL javadoc), try it with a GC supporting rectangle textures. As far as I tested this, it should work fine with all ATI and NVidia, as far as they feature a 2D/3D acceleration support. Here's what to change in both of the methods, and whenever you specify the GL_TEXTURE_2D target :
public void drawImage(double x, double y, GFImage sprite,
double scale, double rotation) throws IllegalArgumentException {
loadImage(sprite);
GL11.glEnable(EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT);
GL11.glBindTexture(EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, loadedTex.get(new Long(sprite.getID())));
GL11.glColor4d(1.0, 1.0, 1.0,1.0);
GL11.glBegin( GL11.GL_QUADS );
/** as mentioned by the short tutorial on rectangle textures, coords have to be casted to the plain texture sizes*/
GL11.glTexCoord2d(0.0,0.0); GL11.glVertex2d(x + 0.0, y + 0.0);
GL11.glTexCoord2d(sprite.getWidth(),0.0); GL11.glVertex2d(x + sprite.getWidth(), y + 0.0);
GL11.glTexCoord2d(sprite.getWidth(),sprite.getHeight()); GL11.glVertex2d(x + sprite.getWidth(), y + sprite.getHeight());
GL11.glTexCoord2d(0.0,sprite.getHeight()); GL11.glVertex2d(x + 0.0, y + sprite.getHeight());
GL11.glEnd();
GL11.glDisable(EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT);
System.out.println("rendering gl_texture_rectangle_ext image: " + x + ", " + y);
}
here is the loadImage method:
private void loadImage(GFImage i)
{
//if the texture is not alredy loaded
if(!loadedTex.containsKey(new Long(i.getID())))
{
IntBuffer texID = BufferUtils.createIntBuffer(1);
GL11.glGenTextures(texID);
GL11.glBindTexture(EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, texID.get(0));
GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);
GL11.glTexEnvf( GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE);
GL11.glTexImage2D(EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT,
0,
GL11.GL_RGBA,
i.getWidth(),
i.getHeight(),
0,
GL11.GL_RGBA,
GL11.GL_UNSIGNED_BYTE,
i.getData());
loadedTex.put(new Long(i.getID()), new Integer(texID.get(0)));
System.out.println("loaded texture: " + texID.get(0));
GL11.glTexParameterf( EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR );
GL11.glTexParameterf( EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR );
// the texture wraps over at the edges (repeat)
GL11.glTexParameterf( EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP );
GL11.glTexParameterf( EXTTextureRectangle.GL_TEXTURE_RECTANGLE_EXT, GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP );
}
}
Obviously hard to imagine that the GL_TEXTURE_2D is wrong, but it is easier with GL_TEXTURE_RECTANGLE_EXT.

GL_TEXTURE_RECTANGLE_EXT is set at the same int value as _NV and ARB_ ext's, so that you don't need to focus on what card manufacturer is involved.