Could there be a problem with the card being corrupted when the arduino is powered down randomly ?
I don't see why not. There is no "power down" function, so it is very possible the unit would lose power at the end of a write and before close. That I presume would do the most damage.
I would try an experiment.
Put a LED on one pin so you will know when you can shut the power off.
Put a jumper wire on another digital pin.
Leave the jumper pin set to INPUT, but set the pin HIGH. That will turn on the weak pullups. The pin will digitalRead HIGH until you touch the jumper wire to ground. When you want to power down, touch the jumper to ground.
In the loop() check that jumper pin. When it is LOW (touched to ground), turn on the LED, then wait 4 seconds or so, then turn off the LED, wait another second, then do everything else in loop(). Insure during that part of the loop(), the SD is not open.
What do you think?