This is a classic color management issue. Your monitor needs to be properly calibrated and you need to be using a color managed print process to get the best results.
I have never printed through iPhoto - does it allow you to control color management? I am not sure.
To start, Odin_aa has absolutely the right first step. Calibrate your monitor. You can do this two ways.
The first is the "cheap and cheerful" way, using the built in software calibration that Mac OS X provides. This is a manual, somewhat subjective (and thus error prone) process. It will improve things, but only to a small degree usually.
The second is more expensive, but if you are serious about good color reproduction, it is essential. Get yourself a hardware calibrator like Pantone's SpyderPro and use this to calibrate the monitor. You WILL be amazed at what a huge improvement it makes, and I do mean HUGE. I was astonished when I did it to my monitor.
Once you do this, you will be seeing faithful color reproduction on your screen. Now, if your prints still don't look good, you will have to extend the color calibration/control crusade to your printer. That is a very printer and software specific area, so we will need to know more about the equipment you are using before we can offer any specific advise.
This is a key area - if you stick with it you will get great results. Good luck!