Have a look at NextGen Gallery. The user can login to upload files to a gallery. And then add/edit captions, descriptions to already uploaded files. You can also restrict what they can do using their roles and capabilities manager.
In case their built-in roles manager is not sufficient you can also use a plugin called User Role Editor for advanced role management.
Regards,
Karan