Existem muitas opções, todas gratuitas: vnc é certamente uma delas. Existem muitos programas implementando o vnc como servidor e cliente, e eles podem ser misturados livremente.
Você pode pesquisar RealVNC ou tightvncserver como um servidor (aquele que roda no pc do Windows), e para os mesmos programas ou outros semelhantes (vncviewer, x11vnc, remmina, krdc,. ..) como cliente.
Alternativamente, você pode usar o RDP (Remote Desktop Protocol), o protocolo inventado pela Microsoft para permitir sessões entre os computadores nativamente, o que é mais simples, pois isso não requer a configuração de um servidor em uma máquina Windows; tudo o que você precisa fazer é para permitir sessões remotas (as instruções sobre como fazer isso dependem da versão do Windows, você pode apenas usar o Google Windows para permitir conexões de área de trabalho remota ). Nesse caso, um bom cliente para o Linux é o rdesktop .