Ubuntu: How to share desktop for remote pair programming
Solution 1:
try teamviewer, works great through firewalls, no special setup required, free for noncommercial use, has working packages for windows, mac and linux (ubuntu).
in addition to see and takeover the remote session, you can additionally chat via text, voice or video. you can exchange files or create a vpn, all from within that application.
Solution 2:
VNC has an option where instead of a client (viewer) connecting to a server, you can put the client in listen mode and have the server initiate a connection. This way you share your connection rather than have someone connect to you.
I'm not sure all VNC versions do this but I know it was possible on Windows and I don't think it was specific to the Windows VNC client I was using.
If all else fails try x11vnc
.