2乗じゃない画像が収まるだけの、2乗Bitmapなりをメモリ上に展開し、データをそこにコピー。
で、そこからD3DXCreateTextureFromFileInMemoryEx()するだけじゃないかな。

或いはD3DPOOL_DEFAULTがいらないなら、十分な広さの2乗テクスチャをCreateTextureで作成し、
それをLockRect()してデータを書き込むだけでいんでない?