We go through a lot of SD cards at my work, and so I've seen many cards fail in different ways, from the occasional fried controller (not the problem you're having since the card would have stopped working altogether) to bad blocks to simple filesystem errors. I've also seen SD cards that were slightly-out-of-spec that work in some card readers but not others (to top it off, it was a batch of cards that had the same serial numbers as the "good" cards from that manufacturer, but had been manufactured in a different facility!).
So the first thing I'd suggest is to try your SD cards in multiple readers. It's possible that the card is just a little bit out-of-spec (either due to manufacturing errors or as a result of its environment), or that the hardware of your card reader is slightly out of spec, or the card and reader are both in spec, but at opposite ends, and just don't quite work with each other.
The card could also be starting to go bad. I don't know how other OSes do things, but on Linux (I assume OS X is similar enough for this to be useful there, too) when the OS can't read part of an SD card it tries again a few times, then tries reading a smaller section of the card a few times before it gives up. If you're using Linux, I'd take a look at the system logs (/var/log/syslog or messages, or do a 'dmesg | tail -20' or so) to see if you can get any useful information about what the OS is trying to do. If you see that the OS is trying several times to read the card and eventually giving up, you could also try again. I've seen cards that have to be re-inserted into the card reader two or three times before they work (though I think that when I've seen that, those cards eventually "get worse" after a while and stop working altogether, so if your SD card regularly requires 2 or 3 attempts to read it, I'd replace it as soon as possible).
I don't know what cameras do when they read SD/CF cards, but they seem to load them a lot faster than I would expect. Either the camera's firmware does a really good job of running critical tasks in the background or the firmware doesn't fully read the SD card. If the latter, it's possible that your SD card has failures that the camera isn't aware of, but that are severe enough to prevent your OS from reading the card. I'd suggest formatting the card in your camera (if you have multiple options, like 'quick' and 'full', do whichever one takes longer: I'm hoping that will cause the camera to actually read and, hopefully, write to each block of the card -- and become aware of any errors it isn't seeing in normal use).
If formatting the card allows you to read the card in your card reader, I'd try to find a way to search for bad blocks/sectors/anything else on the card. With SD cards, the controller is supposed to abstract away things like bad blocks, but there may be ways to look for them (I kind of doubt it, though I did find this answer).
If you can, I'd also try taking enough pictures, that you don't mind losing, to completely fill up the card. Then get them onto your computer and make sure there are no errors. This won't prevent the card from failing in the future, if it's already on its last legs, but it might give you some confidence that you can read any picture the camera can write to the card.
However, if you format the card and still can't read it on your computer using multiple card readers, and you can afford it, I'd replace the card. I'd be very concerned that the card is damaged and in the near future either it will fail completely or the camera will blindly write pictures to bad sectors.