I'm thinking it would be the easiest to do this via DOM manipulation. Sequentially set visibility: hidden to all elements except one, take screenshot, continue on to the next one. Not the most elegant solution, but it's quick and you don't need to understand WebKit or Gecko's source.
I wrote a bookmarklet that would capture all mouse events and let you rearrange elements on the page... I'll see if I can find it.
edit: I can't seem to find it at the moment, but it was fairly simple. Intercept all mouse events, determine the clicked element, record the initial position, start dragging, etc. I think it did some fanciness for non-absolutely positioned or non-block elements too.