Small update, as the question is now more than half a year old:
In Chrome/Chromium 6 you can now send a canvas' ImageData object to a web worker, let the web worker make changes to the object and then write it back to the canvas using putImageData(..).
Google's Chromabrush does it this way, the source-code can be found here:
Update:
The latest development snapshots of Opera (10.70) and Firefox (4.0b1) also support passing ImageData objects to a web worker.
Update 2017:
Actual links from Github (easier to find needed files from Chromabrush
):
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…