Wire.requestFrom() hangs when there is an analogRead() after it

Your code looks okay.
But you have to make small steps to get to the problem.
The Arduino Wire library might not be able to handle that kind of communication.
But there are still some things you could try.

(1) Do you have the latest version: Arduino 1.0.2 ?

(2) Are you sure you have a Arduino Uno, and you have selected the Arduino Uno from the Extra/Board menu ?

(3) Code 'A1' is value '15' or so, It must be okay but you could try just number '1', like so: "analogRead(1);"

(4) The Wire library could be confused, it might not expect such behaviour with the registers of the device. The Wire.endTransmission was updated. It has now a boolean parameter to hold or release the i2c-bus. You could try to use "Wire.endTransmission(true);" ( Wire - Arduino Reference ). Perhaps that will avoid that the device is expecting the checksum.

(5) You could send the error code from the Wire functions to the serial monitor.

(6) Instead of writing to the device. You could just read the CHIP_ID again and again. That makes it easier to check when the values turns to 255.