I'm running Ubuntu 9.10. I just ran into the "grey screen of X" for the first time. Until I ran update-manager this evening and accepted all its suggestions, my setup had been working fine.
My best guess at a diagnosis is that the file named /usr/lib/gdm/gdmgreeter does not exist on my system. So if gdm goes looking for one, it will fail and a bare X screen is a likely consequence. After investigating the contents of /usr/lib/gdm, I directed gdm to use a greeter that does exist. This happens in the gdm configuration file. I don't know where the main one is kept ... but it is certainly not in /etc/gdm/gdm.conf. That file is not present in my nearly-default installation. However, I do have a file named /etc/gdm/custom.conf. I arranged it to contain just these four lines:
(Earlier posts have recommended adding some settings under the [security] heading that actually reduce the system's security. I'm glad everything works without them!)
For completeness/reference, here is what I have in /etc/xinetd.d/vnc. Another user suggested explicitly writing the numbers 127.0.0.1 instead of the name localhost. I tried this while groping around, but now I'm not certain whether it was this or the gdmgreeter symlink that solved my problem.
I'm not sure if my last step is truly needed, but I also added one line to mention this service in my file /etc/services:
# Start a VNC connection with gdm login prompt: 1280x1024, 24bpp.
type = UNLISTED
port = 5901
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -noreset -SecurityTypes None -once -extension XFIXES -fp /usr/share/fonts/X11/misc,/usr/share/fonts/X11/75dpi -co /usr/share/X11/rgb -geometry 1263x1024 -depth 24 -query 127.0.0.1
I hope this might help somebody else fighting the grey screen of X.
1280x1024-24 5901/tcp # VNC Service