Isn't the progress bar problem the same as GPS apps that estimate time of arrival. Both have variables that are known(your car speed and destination) and a bunch of unknown processes that affect how quickly you reach the destination. Seems like you should be able to apply a similar solution.