Use an intermediate page.
Page 1 has the form
Page 2 validates the form data, converts all form variables to session variables, displays something, and cfincludes Page 3.
Page 3 produces the report.
The challenge with cfflush is that whatever you flush out initially stays on the page when everything else is there unless you do something to get rid of it. And, getting rid of it might result in white space instead of having the rest of the page content coming back to the top.
Also, there are occasions where cfflush crashes the page because of the code that follows it.
You can do "clocks" and such with animated GIFs, but if your reports are taking "a long time" now, the only thing that you can be sure of is that they will soon take even more, ad infinitum.
Perhaps you can sell them on the idea that reports will be generated upon request and e-mailed to them. Try to get beyond the notion of "instant gratification" with regard to reporting, because this produces a potentially-unlimited (and always, very repetitive) workload on the server. You are not a hardware salesman . . .