I read that Emacs 24.4 should restore the desktop by default. It works perfectly except that the window configuration is not retained. It is saved because I can clearly read it in the desktop file, but when it starts up there is only one window in full screen. The others are loaded in their buffers but they are not displayed.
The reason that Emacs behaves differently when it is launched from the GUI than it is when launched from a shell, very likely is that these are actually different versions of Emacs. Apple ships an ancient version of Emacs with OS X and correctly places it on
Unfortunately most of the third-party Emacs packages for OS X don't place the executable on
$PATH so you have to do that yourself, e.g. in
~/.bashrc if you use bash.