Yeah, I totally understand what you mean about billing.
Often, if I make a big mistake on an estimate, I'll just eat the one year and then send a short and polite letter with advanced notice of what it might cost next year assuming the same complexity.
I'll also learn from that big mistake next time I quote something similar.
But this depends on how the situation was represented, too. If the client was not forthcoming, then I will politely explain that I'm losing money and ask for more. If the client refuses, I might still finish for the same rate given my time investment at that point, but I'll likely fire the client when it is completed. This is usually quite satisfying. The heck with them if they expect you to lose money on a tax return when they were not forthright about its complexity.