Something to toss into the crock pot of thoughts on this thread...
Many schools have fees that increase rather dramatically as the student progresses (more dramatically than Balrog's, for instance). There are different models of this. Some are similar to what Balrog posted - just a gradual ramp-up over time. Some add fees for advanced classes, etc. My model is currently the opposite: newer students are charged more. These represent two different approaches (and I'm not sure either is "right" or "wrong").
Fees that increase (through whatever structure) as a student's rank increases (so per-student increases, not regular fee increases for the entire school) are based on a perceived value model. Students perceive higher value for advanced classes, higher rank, etc., so it's fair to charge more (and they're willing to pay more, in general).
I currently charge on a time-and-effort model. New students take more time and effort to teach, in general. I can turn my back on a 2-year student and let them work for a while. A brand new student needs attention from someone (which, in my case, means me) almost constantly. If I give them a punch to work on, I need to come back in a minute to make sure they're doing it at least approximately right.
So, my approach has been to keep fees constant once a student starts. Whatever fee they start at, is (theoretically) their fee for life. If I need to increase fees, the increase applies only to new students walking in. I might find I need to balance that with some testing fees at higher ranks (where tests take a good deal of time and attention from me), but the cost-per-year would still be lower for a long-term student than a brand new one. I'm not sure how that would work in a large school - it might take more effort than it's worth.