End mid loop() @ sensor input, how?

Instead of for() loops, just increment a counter for fadeValue.
Let loop() do its thing and loop, do not use delay().
Use millis() to determine if enough time has passed to increment fadeValue.

Check the sensor input every time around loop()