It could be your monitor. You don't mention what monitor you have, but for the sake of argument, I will assume that you have an LCD monitor. Most newer cheap monitors use TN displays. This type of display can only display 6 bit color or 262144 unique colors. Now most of these monitors use tricks like color dithering to increase their color palette, but it's not particularly accurate. The more expensive PVA or IPS panels have much more accurate color reproduction as they use true 8 bit color or 16M colors. Of course you can't beat the old faithful CRT when it comes to color reproduction in my opinion.
Also another thing it could be is that the pictures you are using are highly compressed JPEG files. If the file size is relatively small, it could be that it's overly compressed and some of the color information is lost in the compression.