I have experience working with the JavaMail API, and developed a simple Android app which performed tasks and alterations to existing inbox entries.
Requirements 1, 2, 3, 4, and 6 would be easy to implement:
1 would be a simple loop through all of the messages available in the inbox. Assuming standard MIME formatting, the emails containing image-based content would appear with the img tag, as MIME resolves to valid HTML. Each img tag would be parsed for the link, the image would be downloaded and saved.
2 would be easy; all images from 1 would simply be downloaded to a user-defined folder placed by default on the Desktop.
3 would also be easy, the program would implement a process for browsing through the images and writing a comment in a popup box, which could be saved to a custom flat-file database format for portability.
4. When images are downloaded, their cryptographic hashes would be saved in the database described above, and would act as a fingerprint. All images would be checked against the fingerprints database, and any duplications would be noted, either through a user alert, generated report, or note.
6 A report detailing statistics about the queried account including messages without body or subject text, how many contain images, etc. would be trivial; while looping through emails for #1, statistics regarding each email would be tallied and a report would be generated once the loop finishes.
5 could be done moderately well with metadata parsing.