When homing, I manually jog at full speed to within an inch or so from the switch, then let mach home the axis from there.
Fastest way I know of, if the axis knows not where it is.
In "Homing / Limits" you can set the speed up a bit, but then check for consistency.
Ray has a cool macro for probing that could possibly be incorporated into the reference button where it HOMES once fast, then again slowly for greater precision and accuracy/repeatably.
Are you using servos by chance with a closed following loop ?
Some of them allow an amount of overshoot that can give you a similar problem.
Russ