Wire.requestFrom(acc_address, (byte)6);
while (Wire.available() < 6); // ***** fails here *****
You don't need the Wire.available() line at all. Wire.requestFrom blocks until it returns the requested number of bytes, or fails to do so. So a better approach would be:
if (Wire.requestFrom(acc_address, 6) != 6)
{
// handle error here
return;
}
// if we got here, we have data
The error could be the device isn't there, isn't on, has another address, and so on.
You can check the address of the device (and whether it is on, etc.) by running the I2C Scanner sketch on this page: