The I2C is the hardest part for power down.
Did you read this:
http://www.gammon.com.au/powerIf you don't need analog inputs, you can turn off the analog section of the chip.
You could also reduce the cpu clock run-time.
I can't find information in the datasheet of the BH1750 what the power usage is. Does it have a sleep mode ?
Turning off I2C Slaves is not good. The pullup resistors keep the SDA and SCL high, and if a I2C sensor chip has no power, there will be current via SDA and SCL into the sensor chip to GND.
You could turn off the pullup resistors (I think that is what you do), but then the I2C bus is no longer valid. You might need a long startup sequence after that.
Could you show your whole sketch between code tags ?
The best option is to keep sensors and pullup resistors active. Try to put the sensor into a sleep mode. The resulting current could be only a few micro-amps.
I'm not sure what I remember about sleep mode for the I2C in the ATmega328P and the Wire library. I would expect a lot of troubles.
Did you also remove the yellow capacitors ? If they are bad quality, they can leak. I think one of them is connected to VCC. Running it on one or two 100nF capacitors is okay.
Do you know that an ATmega328P can read its own VCC ? You can read the battery voltage without external components.