Actually I'm not sure your problem is chunking. If I get you right you are writing the progress to the same stream where the result will finally go?
this can be done with or without chunking simply by calling flushBuffers on the response.
However, it then depends on your connection and your browser if this makes it into the client. A transparent proxy may aggregate the content and not flush until the response is complete or its own buffer is full. The browser might not act on any content until the response is complete or its buffer is full.
In some implementations of comet that use this technique, you have to send 512 byes of white space after the pushed message.
You'd be better off using something like server sent events, websocket or long polling to send progress to the client..... better yet - just use cometd.org, which will select the best transport for the client available.