I think there must be more going on here - maybe something to do with the other scripts, or your SSI setup. As stated above, if the request was made to "my_html_form_with_execs.html", then Apache should spit out the right headers along with the parsed html, which will include *any* output from your script(s).
in reply to CGI + SSI = extra content-type header?
None of your scripts should need to print a header - I'm puzzled as to why the other scripts *don't* show the header, if they all have a "print $q->header" line. Have you looked at the source of the HTML to work out exactly what is printing what where and when?
Again, commenting out the "send_account()" line should make no difference, unless there's an error there somewhere - what do the logs say when you comment out the "print $q->header" line? Is it a "no headers" error or something to do with send_account()?
Personally, I'd drop the "exec-cgi-inside-server-parsed html" approach and use HTML::Template instead :)