i2c over 1m shielded multi-core cable with 0.5A load at the same cable is possible?
The best solution to a problem like this would be to put a small MCU at the sensor, and then send back something like a UART data stream via a differential transmitter.  Something like an ATtiny would work well.
Additionally, it would be good to do the PWM switching at the location of the LEDs, and to bypass the supply for that with plenty of capacitance there, to try to keep the current through the supply lines mostly DC - eg, the long wires would carry the average current while the current pulses would stay local.  You could also consider using a higher voltage supply, and using a regulator at the point of load and/or putting your LEDs in series to reduce the overall current.
In terms of what you can do right now, in addition to the suggestions in comments, you could try much smaller pull-up resistor.  10K is marginally too large for even an on-board situation.  Hopefully you are benefitting from pullups already on the Arduino.  If you look with a scope, too weak a pull-up would mean an RC character to the signal rise, while too strong a pull-up would mean that the signal never really gets to ground.
Its unclear if your application would permit it, but if you could disable the LEDs while taking a reading that would likely solve your problem.