Bryan and Matt, thanks for weighing in with detailed help (I've been side-tracked with a 1 year old), and Bryan that's a pretty nice VNC systemd service you wrote. I've been meaning to do that to simplify things for folks (instead of a cron start), but the cron solution was developed for a wheezy based raspbian setup guide where there was no systemd to run the service (so it wouldn't have been much help). Do you mind if I test it, tweak, and add it to my tutorials?
I did want to add a note though: he can't run Gnome in this context because gnome has a well-documented bug where it no longer works with TightVNC (debian's default VNC server). It just shows a black screen. It does work with more modern VNC implementations like TigerVNC, but that's not in the Debian repos. So upthread I suggested that he migrate to xfce4 (which is compatible with TightVNC).
So other than that, your suggestions are very good, especially the part about disabling GDM. Modern GDM instances do some truly bizarro display stuff (and from 3.16 up are running a wayland session by default and occupying two ttys among other discontents).
So OP, a reinstall is not a bad idea and make sure to select XFCE4 during the install.
If you're trying to rescue your install, definitely disable GDM as BryanC suggested, and run his commands, but replace the "gnome-session" line with echo "exec startxfce4 &" >> ~/.vnc/xstartup