1. headers:
Content-Description: File Transfer
Content-Disposition: attachment; filename=image.jpg
Content-Type: application/octet-stream
2, 4: Воспользоваться плагином
jQuery File Upload , главное проверяйте на сервере, потому что 100% клиентскую проверку невозможно реализовать.
3. Обычно это делается через Flash, не все браузеры это поддерживают. Готовые решения например тут:
code.google.com/p/zeroclipboard/ + плагин JS:
www.steamdev.com/zclip/