Just an explanation why the file opens in IrfanView: when Photoshop saves a PSD file, it embeds a merged full-size "preview" image in it - this is what is displayed by viewers. Obviously, they don't have access to layers in the file. Gimp need to render the whole stack, which is much more difficult.
In principle, the merged preview generation can be turned off in Photoshop, which will make PSD smaller, but all viewers will see just black then.
In my experience, Gimp has no problems rendering "classic" Photoshop's... err... pixel-based layers. However, recent versions of Photoshop introduced "vector" or "procedural" (I don't remember the exact term used) layers - i.e. instead of actual pixel data, Photoshop stores definitions of geometric figures, gradients and stuff, which can be edited without loss of quality. Those layers are problematic for Gimp. I think they can be rasterized in Photoshop before saving which will make Gimp to open the file correctly.