I believe Pronterface has this feature. I'm not sure exactly how it works, but you could hand the firmware a list of X/Y rectangles, and perhaps it could then ignore all moves with an end coordinate within any of the rectangles. I don't know that it's worth implementing, but then I have a flaky printer with a small bed.