Things are looking pretty grey now, but it's getting closer to what I'm aiming for (code-wise):
Here's a fun fact: the majority of the time generating this image is proportional to the number of pixels in the image. For 800x600, that's 480000 pixels. If we say a large BSP map will have maybe 100 lightmaps (this might be an over-estimate), which are 128x128 (because that's how big they are), then that's 1638400 pixels, i.e. roughly 3-4x more pixels. At the moment, a high quality render would probably take me around 30 minutes for 480000 pixels, so for a very large map, that would be less than 2 hours. As far as I know, Q3Map2 can take over a day to run the lighting phase for a large map.
These are all very rough numbers, but I'm hoping they're approximately reflect the kind of speed I'll be able to get - and I haven't even made this multithreaded yet. And it's not even making use of GPUs.