Recommendation: Don't change units based on the progress of the download
However, it's not uncommon to cut off before that: I've seen e.g. camera manuals say "0.8 MB" rather than "800 KB" for the size of a photo.
Well, the thing with documentation is you should be consistent and not change between units. Hence the use of 0.8 MB in the camera manual (chosen because MB is currently the most common unit when taking about photo size). You don't want a user to think 800 KB in bigger than 80 MB just because they lost track of which unit you had changed to using.
One key thing though is to make sure you don't mix and match units when providing comparisons. For example, don't say "800 KB / 11 MB". That same rule applies when displaying a table of available downloads, don't say:
- File 1 = 800 KB
- File 2 = 80 MB
- File 3 = 0.8 GB
Instead pick the most common unit, and use that for all:
- File 1 = 0.8 MB
- File 2 = 80 MB
- File 3 = 800 MB
Basically: If it is easy for the user to visually compare 2 or more values, than make sure they are the same unit.
for example when displaying download progress / remaining
So, with regards to your example. If we agree you can't mix and match units then the obvious question is: should the "total download size" ever change units? (E.g. 800 KB / 8000 KB later becomes 1 MB / 8 MB as the download progresses)
I would say the answer to that should be no. The total download size should be constant through the whole process. Therefore, you should also fix the unit for the progress size too.
Determine the most appropriate unit for your "total size" value and then fix your "progress value" to use the same unit. Don't change it part way through.
Direct Answer: Switch at 1000 (or 1024)
If after all that then you still want to change units as the value progresses, then I would suggest doing it once it gets to 1000 of them (or 1024 if more appropriate). The reason for this is because it shows a more accurate and useful value for longer.
For example, consider the transition of MB to GB. If the user has a speed of 1 MB/s then this:
799... 800... 801... 802... 803
is more useful to the user than:
799... 0.8... [insert 100 second wait]... 0.9