STM32F3Discovery & LSM303DLHC magnetic field data not updating
I ran into the same problem with the LSM303DLHC in continuous mode using the auto-incrementing mag data registers. I didn't manage to resolve the issue with the data lock never clearing but did get around the problem with the following algorithm:

1. Power on chip and wait ~400us
2. Open/Enable/Start I2C
Loop
    3. Write to the MR_REG_M register with value 0x01 to place into single shot mode
    4. Read SR_REG_M register until DATA_RDY flag is set
    5. Read 6 mag data registers
    6. Write to the MR_REG_M register with value 0x3 to place into sleep mode
EndLoop
7. Close I2C
8. Power down chip


Stopping and starting I2C during the loop caused me problems but the single shot-sleep-single shot method seems to be fairly robust.

Hope that helps.