I finally figured out why the colours in all my photos on Flickr look wrong: Firefox is stupid and broken and doesn't honor embedded ICC color profiles. I've been doing all my photo editing in Adobe RGB and saving Adobe RGB JPGs with ICC profiles attached. Firefox ignores the profile, interprets the images as if they're sRGB and the colours end up all washed out.
One solution for this is to tell Photoshop to just do all the work in sRGB, the default that color-stupid apps like Firefox assumes. But I'm stubborn and want to use Adobe RGB when editing on the off-chance I want to print something. The solution is to convert to sRGB right before saving the JPG, via "Edit / Convert to Profile". In theory the Photoshop "Save for Web" option will take care of this for you, but in didn't seem to work for me and save for web does other things wrong anyway.
Awhile back I bought a ColorVision Spyder to calibrate my monitors. It works great, makes a huge difference. Now that I understand better how profiles work (or don't work, in the case of Firefox) I think I can get consistent colour all the way to the printer.