I would agree that storage of images as blob data in the database is insane for both storage space requirements and performance. You'll find that most if not all modules simply store either a folder/filename or fileid in the database and the actual image file in the file system. Beyond that, there are a wide variety of approaches to renaming/resizing/auto-thumbnailing files on upload, controlling upload folders and upload rights, and keeping the database reference insync with the actual image files.
You might like to take a look at my Image Editor Control found in the DNN Forge/CodePlex. Although the module itself could be used for image upload and display, it was built primarily to demonstrate the underlying server control and its many option settings. If you are looking to create your own image handling and storage routines, you will find the source code of interest as it includes methods for image file upload and processing using GDI+, dynamic image preview using a generic HttpHandler, image resize and thumbnailing, generation of unique image file names, storage and retrieval to and from secure database storage, Octree palette optimization for gif image formats, and client-side javascript/MS AJAX drag-handle specification of the cropping rectangle.