How to provide upload function for users
You have a few options:


Use a contributed module.  Take a look at this link for a list of modules: File Uploading and Managing. A few that are definitely worth taking a look at are: FileDepot, WebFM, and ELfinder
Create a content type where you can upload files (using the core image module if D7 or if D6, the Image or ImageField modules)
Create a custom module to your exact specifications.  This is definitely the most customizable option, but involves more work and a familiarity with the API. To get started creating a custom module, take a look at the Module developer's guide, the Forms API Reference, and the Form API Quickstart Guide