There are numerous ways & tools to reduce the file size but the one that I found most useful is the free image editor Paint.NET's dynamic file resizing feature.
Whenever you save a new image in Paint.NET as a Bitmap, GIF, JPEG or PNG, it shows you a preview of that image alongwith the file size before it actually saves the file & lets you change image settings to modify the file size or quality.
You can also open an existing image within Paint.NET & control image settings from the File > Save As step.
You can not just control file size but also image dimensions easily with the Image > Resize (Ctrl + R) menu option.
Also see:
HOW TO implement online cropping feature for uploaded Images
90