The biggest inaccuracy would be the tolerance. Typically 5%. This would give the output as,
12 -> 12-9.1-0.45 = 2.45
12 -> 12-9.1+0.45 = 3.35
Paying a bit more and getting 1% zeners would give,
12 -> 12-9.1-0.09 = 2.81
12 -> 12-9.1+0.09 = 2.99
The above error would be fixed and so could be compensated for in software. No good for production but a possibility if it's a one off. This could be automatic if you know a fixed state. I.E. if when no current is flowing the voltage is 12V then the Zener error can be read indirectly by the ADC.
Error due to current would again depend on the zener chosen. With a BZX family zener then increasing the current from 1mA to 20mA results in a 0.1V output change. So using a 1K resistor in the above scenario would keep the zener within it's comfort zone and result in a voltage variation of about 0.015V.
Temperature error would be a max of 7mV per degree C. At 0C the output will have dropped 0.14V and at 40C will have risen 0.14V. Typically this would be half this value.
Overall, not very accurate, but it depends on the application.
Mike.