Assuming you want to VNC from windows to linux, here is what you need to do :

1. In putty dialog, enable port forwarding(not X11 forwarding), it is the lower dialog. You choose one for local(the window machine) and one for linux(in iport form). So say you choose 5900 for the local(Source Port) and linux.acme.com:5900(Destination).

2. login to linux as usual through putty.

3. start vncserver in the linux prompt(usual parameter), if you use other ports than 5900(if you have local X server), you need to change the Destination in (1)

4. sart vncviewer ON Windows, not on linux and choose local:0(assuming you choose 5900 as the "Source Port" in (1)

Now your vncviewer on XP would go through local port 5900(machine it is running) which is being forwarded by putty(as it is running) to linux port 5900 that you have ssh into. The vncserver on linux is listening to this port and would start a new xsession as usual.

If you also run the putty agent on Windows, you can also use RSA so you don't need to give any username/password(assume the ssh server is setup this way).

As for the password, I believe the vncserver would ask you once when it didn't see any in the home directory. It is a hidden file(.something) and would be used in a future invocation.