Можно сделать это на уровне модели, тогда при сборке param сразу можно будет создавать image нужный.
Можно написать конвертер, который будет анализировать param и отдавать разные картинки для разных случаев.
Стандартный webclient умеет оповещать о процессе загрузки, оповещать о размере уже скачанного и всего размера, умеет качать файлы с учетом авторизации\куков.