Уверенный Вы могли разделить остающийся размер файла на текущую скорость загрузки, но если Ваша скорость загрузки колеблется (и это будет), это не приводит к очень хорошему результату. Что такое лучший алгоритм для создания более гладких обратных отсчетов?
speed=speedNow*0.5+speedLastHalfMinute*0.3+speedLastMinute*0.2
Думаю, лучшее, что вы можете сделать, это разделить оставшийся размер файла на среднюю скорость загрузки (скачанное на данный момент делится на время загрузки). Это значение будет немного колебаться в начале, но будет становиться все более и более стабильным, чем дольше вы скачиваете.