Right now, the support for tagging media is pretty disappointing. You can add tags or categories to the attachment post type, but you'll find the UI is unacceptably bad (it's a text box where you enter terms separated by commas). There's a plugin Media Tags that is decent though, so you might look into that.
GravityForms is nice for front-end uploading, but make sure you're thinking through security if you have a front-end upload system.
Alternatively, you might be able to create a special role that only has access to upload and manage their own media items. You can write your own custom role or use something like Members or User Role Editor to do that.
Once you've setup all that, it's just a matter of building out some nice taxonomy and attachment archive pages.