There are a lot of people who have implemented this kind of thing. However, the failing grace is sensor noise. Common resistors have pretty sloppy tolerances, and ADCs are susceptible to heat and sensor noise. The values you produce need to be very distinct to work reliably.
The nkcelectronics LCD shield uses this scheme to distinguish among five buttons, and in my experience, it works okay if you're giving it plenty of power at room temperature, but it decodes the buttons wrong if the environment is too cold or I use a not-quite-strong-enough 9V battery.
Digital things like buttons are best implemented as digital circuits, with just two major values, HIGH and LOW. Trying to get analog values to behave in a digital/quantum fashion is flirting with inaccuracy and confusion.