Help reliably reading switch on long wire

The switch is ~2m from the Arduino and is connected using 7-core trailer cable (http://www.maplin.co.uk/7-core-trailer-cable-70). Some of the cores in that cable are used to power two DC motors which can typically pull a total of about 4A@12V, other cores are used to carry the signal from a hall sensor which operates at 12V.

Of course its going to mis-trigger if you run it parallel to high-current cables. You will be getting a lot of electromagnetic and capacitive coupling if you do that.

You should run your inputs/sensor wiring completely separate from the high current wiring, and it should be shielded, twisted-pair or both.

Add 100pF between the input pin and ground too for RF suppression.