I had exactly the same problem. Turns out the solution for me was a bad display mode in X.
Check you /etc/xorg/xorg.conf. Do you have a display mode that is of higher resolution that you are not using? For example, your current display mode is 16-bit 1024x768 but the Display option for 16-bit alos includes "1280x1024". If you don't know what I am talking about, please post your /etc/xorg/xorg.conf here and we can take a look.
What happens is that while booting, X skips over the display resolution it cannot support. Since at that time you do not have a session, a new session and login are presented. However, coming out of suspend, X tries to apply the bad resolution for the current session. Since that fails, it kills your current session and starts a new session with the lower resolution.