<p>I'm trying to solve this flickering problem on the iphone (open gl es game).  I have a few images that don't have pow-of-2 dimensions.  I'm going to replace them with images with appropriate dimensions... but why do the dimensions need to be powers of two?</p>

Typically, graphics hardware works natively with textures in power-of-2 dimensions.  I'm not sure of the implementation/construction details that cause this to be the case, but it's generally how it is everywhere.
EDIT:  With a little research, it turns out my knowledge is a little out of date -- a lot of modern graphics cards can handle arbitrary texture sizes now.  I would imagine that with the space limitations of a phone's graphics processor though, they'd probably need to omit anything that would require extra silicon like that.