Anyone know of not-perfect-but-usable, affordable eye tracking software that works with run-of-the-mill webcams, preferably iSight?
Try Opengazer, which is free and should work on any Linux/Mac system
For web sites you could try http://www.picnet.com.au/MET/ here is a blog post about this: http://www.picnet.com.au/blogs/Guido/post/2010/01/27/PicNet-Mouse-Eye-Tracking-Service-Limited-Release.aspx
From a related question which specifically asked a frame-grabbing solution to be pythonic, you should give a try to motmot's camiface library from Andrew Straw. It also works with firewire cameras, but it works also with the isight, which is what you are looking for.
From the tutorial:
import motmot.cam_iface.cam_iface_ctypes as cam_iface
import numpy as np
mode_num = 0
device_num = 0
num_buffers = 32
cam = cam_iface.Camera(device_num,num_buffers,mode_num)
cam.start_camera()
frame = np.asarray(cam.grab_next_frame_blocking())
print 'grabbed frame with shape %s'%(frame.shape,)
It is used in this sample neuroscience demo. This should inteface with libraries doing the conversion from image > eye position like opengazer, the harder part those days being often the hardware part.
I have tried both the opengazer(http://www.inference.phy.cam.ac.uk/opengazer/) and the gaze tracker from ITU(http://www.gazegroup.org/downloads/23-gazetracker). I got opengazer working easily with a number of low cost webcam. For the ITU gaze tracker I managed to get it working but the calibration stage and performance without using infra-red lighting was not that good.