Experimenting with C#s networking, I wrote a little application that would sit on a machine, set itself up as a mini HTTP server and return screengrabs of whatever was on screen when a connection was made to the server. Handy for checking on machines without a monitor. Probably.
This was done by having the HTTP server return a standard HTML page with a embedded image link - when the server had the image link requested, a desktop-wide screen capture is taken, converted to a GIF stream and returned to the browser.

the page generated by the HTTP server, plus the current desktop image displayed below.
Uses the .NET networking classes TcpListener and NetworkStream to do most of the work. Each request sent by a browser is handled in a seperate, isolated thread to spread the processor load out. The code also demonstrates how to take a screenshot of the desktop using P/Invoke'd Win32 functions GetDC, ReleaseDC, GetCurrentObject and DeleteObject.
Download the source code here. Built with .NET 1.1 and VS 2003.
Download a pre-compiled version here. Just run it and connect to the machine at port 81, eg "http://localhost:81"