I had a lot of trouble with filesystem corruption and I/O errors on a 256MB SanDisk SD card. The cause turned out to be badblocks on the card. It took me a while to realise I could do a badblock scan of the card, like you would for a hard disk.
See
this post for instructions on doing a scan. If you do find you have bad blocks let me know and I can post instructions on partitioning your card to avoid them. However if your card is still under warranty then you should just return it and buy another card (or a different brand).
I used my refund from SanDisk to buy a 512MB Kingston SD and haven't had any more problems. I now badblock scan every new card I buy and return them if they have any problems.