mpassos Users can create their own account (configured to have a default role), preferably with social logins
There is a registration process. It does support SSO with common providers used in organizations, including LDAP, ActiveDirectory, Shibboleth and SAML. It does not currently support social logins (Google, etc.) because no one has asked for it yet, but it could be done. It's just another authentication adapter.
Users can describe their own images (and potentially others', in a 'wiki' fashion)
There is provision for commenting on records, and people have made plugins to allow users to enter data into specific fields on records. There is also provision for spatial annotation of images by users; at least one theme also implements this for video - the plumbing is there to support it, but the UI has never been standardized.
There's a submission interface built into the current version of Pawtucket. The basic workflow is user logs in, clicks submit, gets a theme-specific form (with whatever fields you want to expose for submission) that can include media uploads. Each submission is queued for review by an archivist on the back-end. It's very basic and meant for classroom/project use. Size of uploads is limited because it's using tradition HTML <form>-based requests.
The next version of iteration Pawtucket, which we're using for our own projects but haven't released yet, also includes a system for upload of very large media (any number of > 1 gb files using the Tus file transfer protocol) with user-provided description for submission to the archive. This system is already in use by a project to support field submission of video.
Users can submit their own images (via our own submission interface that communicates with CA's API)
The GraphQL API only supports indirect loading of images via URLs. Eg. you create a record and set the media to a URL and CA will grab the image off of that URL (assuming it is configured to allow this - by default it's not going to allow this for security reasons). We are exploring better ways to allow for large file uploads in a GraphQL context and would welcome suggestions.
The older REST API can use traditional POST submissions to upload files, if that's what you want.