There may be a number of reasons why you wish to create your own file uploading component or perhaps you want the challenge; perhaps you don't want to plunk down the money for a third-party upload component like ASPUpload or SA-FileUp. Whatever your reason you can easily create your own file uploading component.
One way is kind of a half-effort sort of way: using a Windows Script Component (WSC). These script components are created using your scripting language of choice (usually VBScript or JScript) and can be used on an ASP page without requiring any sort of registration process on the Web server. To see an article on a file upload WSC, check out: A File-Uploading Windows Script Component. To learn more about WSCs, check out: Building Windows Script Components.
If you have VisualBasic you can create a binary COM component capable of file uploading. The code, actually, is pretty short and simple. Doug Dean has provided a free upload component, EZSite Upload Lite, which contains the full VB source code in addition to a compiled version of the component. If you are interested in creating your own file upload component I highly recommend checking out the source to this to get you started.
If, however, you are one of those people who like to do everything your own way and would view seeing someone else's source code as "cheating" or whatever, you can attempt to write the complete source yourself. I do, however, suggest that you check out the Form-based File Upload in HTML RFC.