There are so many possibilities:
Set up a webcam on your Linux box, point it to the Windows machine's screen so you can capture what's on it, set Windows up so that it doesn't lock or blank the screen. Install fswebcam and use cron to automate running it every 30 minutes. Create a file named e.g. cronfile containing this:
*/30 * * * * fswebcam -q "`date`.jpg"
Then activate the cronfile with:
crontab cronfile
this will put a timestamped file in your home dir every 30 minutes.
The first five fields in a crontab job definition decide when to run the job; this will simply run it every 30 minutes (*/30) of every hour, every day of every month (the 5th field allows you to decide which days of the week a job runs). The command that will be run is the rest of the line.
fswebcam takes a filename on which to save the captured image. In this case, we build the filename by using the output of the date command (the backticks tell the shell to first run the command within, and place its output value in there, before running the rest of the line). I also used double-quotes because the output of date can contain spaces, so the filename has to be quoted to work.
That's all there is to it.
Another option is to use VNC the way you're using it now. You'd have to set up both the Windows system and the Linux one to not blank the screen after some period of inactivity. Then you could use a screen capture program (I suggest shutter) and automate it running every 30 minutes using the same cron technique I describe above.