It seems that there is a bug in Catalyst driver, when I set GL_UNPACK_ROW_LENGTH to a value other than zero, under some specific image width, the texture copied from PBO will be corrupted. I have an AMD radeon HD 7770 card and use Catalyst 13.1 driver in Windows 7 x64.
The attached sample project can reproduce this issue. Please build it with VS 2010 in 64 bit mode, run the program and two bmp files named "correct.bmp" and "bad.bmp" will be generated, you can see the corrupted image in bad.bmp