Have you tried the -C option in ssh to enable compression? You can also set the compression level in the config file as described in the ssh manual for "CompressionLevel". This should use less bandwidth.
I have no experience with openVPN so unfortunately I can't give you a good comparison. I would think that forwarding X could theoretically go faster since it seems to use a lot local X session code in order to display certain windows instead of painting the whole desktop like with VNC. I don't know for sure though.
I'm assuming your using a command like ssh -C -X username@yourdomain.com
and starting gui programs from the commandline like /usr/bin/firefox.
If you want to tunnel VNC over your ssh session, you can use ssh port forwarding without having to open any further ports in the firewall. You just need a vnc server on the remote host.
ssh -C -L 4000:localhost:5900 username@yourdomain.com
(assuming the vnc server is serving on port 5900)
Then open up a vnc client on your local machine and connect it to localhost:4000
I tested both ssh options on my LAN and X-session forwarding far outperformed any of my local VNC tests. I was able to watch youtube videos from one x-session to the other in half-watchable quality. The sound however still played on the original system.
If possible, you should switch from X forwarding to NX or VNC to speed it up. X forwarding is not bandwidth-wise in any sense. – Olli – 2011-01-27T16:41:41.043
In my experience, VNC is about as bad as X Forwarding. NX is nice, though. – Fake Name – 2011-01-28T07:08:47.590