There is a header called
Content-Length that your client software uses to determine the time remaining, but looking at the
Content-Length header, subtracting the amount already downloaded, and then dividing the remaining amount by the current download speed and converting that into time.
If the server is not sending the
Content-Length header, there is nothing you can do about it unless you have control over the server.
My guess is that the file is not being served by apache directly, but via something like PHP or CGI, and whoever wrote the script has forgotten (or not known about) adding that header to the output.