The datasheet for the SDRAM chips should specify the exact sequence for putting the chips into self-refresh (might be in the JEDEC specs). Have you probed all of the control signals going to the SDRAM chips? Verify that the chips are really being told to go into self refresh mode.
If the chips aren't being put into self refresh properly, then you have a problem with your "go to sleep" code.
After that, make sure you are exiting self-refresh properly when your processor hits the resume vector (verify it with a scope). There may be some re-initialization steps you are missing.
If the above are both handled correctly, then you are crashing for a different reason. Some device probably lost some context that you didn't preserve. Power supply sequencing could be another cause (some device is still powered down).