How can I to add upload functionality outside of the admin area?

You won’t find much on the Codex or the net about this. Media can seem like a pretty dark art, but everything you’re looking for is in /wp-admin/includes/media.php.

The function you’re looking for is media_handle_sideload(). You’ll have to pass it a $file_array, which you’ll have to read up on.

Basically you just make sure your file information is all up to snuff, pass it into this function and it creates something that acts a lot like a regular post and can be manipulated via the media tools and custom post queries with post_type=attachment argument.