I've been running a couple campaigns using the Warhammer rules for about 2 years now, nearly every week. One is set in the Old World and the other one on Athas and we've found a good set of rules for keeping the power levels in check and slowing down advancement while still allowing the players to feel like their characters are growing. Here's what we've been doing:
The cost to advance to a skill rank is equal to the new rank's cost. Rank 2 is only available to Intermediate level characters and rank 3 is only available to Advanced characters (see below).
We got rid of adding fortune dice to characteristics. Instead, players can use the fortune advance on their career card to increase their maximum fortune pool.
You can repeat the same career. If the career ability says you get X once per game session, you get it again. If it adds a permanent die to a check, or some other ability, I make up a new career ability.
In our Dark Sun game, I limited Intermediate careers to rank 2, Advanced careers to rank 4, Elite careers to rank 7, and Heroic careers to rank 10. That also meant I had to add quite a few careers at each rank so there was always something to choose from and people wouldn't be forced to sit in the same career for 20-30 weeks. It was a bit of work, but well worth it. Consequently, they only get access to the rank 2, rank 3, etc. action cards when they hit Intermediate, Advanced, Elite, and Heroic levels. Basically, we treat the action cards as though they read Basic, Intermediate, Advanced, Elite, and Heroic instead of having the printed ranks on them.
Generally, I give out 1 xp per session, unless the session is only a couple hours. Instead of extra xp at the end of a scenario, I give the group a free specialization that relates to the scenario. I let them choose what it is as long as they can justify it. So far they all like that quite a bit. They've told me they feel like they are getting something special, but they aren't advancing too fast.
To make skill checks a bit tougher, we were adding one challenge die to the check for each skill rank the opponent had trained, and the defender could only play one defense card. However, last month we came up with a way that the group is much happier with. When you make an attack, you roll 1 challenge die plus a number of misfortune dice equal to the opposition's relevant characteristic. The defender can play one defense of each level, not type, per turn. So, you can play Dodge, Improved Dodge, and Advanced Dodge all on one turn, but you can't play Dodge, Parry, Improved Dodge, and Advanced Dodge because you would be doubling up on Basic Defenses. The rule is one Basic Defense, one Improved Defense, and one Advanced Defense per turn. If you have mastery, you can refresh one of those cards foruse against a subsequent attack that turn. Also, those cards have a recharge rating of 1 instead of 2. Finally, we trade out four misfortune dice for 1 challenge die, so it pays to try to get as many misfortune dice on a check as possible. It's caused the players to think a bit more tactically and look for ways to gain advantage and cause disadvantage to their opponents. For attacks that go against a skill, we just treat each rank of skill the defender has like a generic defense card. Rank 1 adds 2 misfortune dice, rank 2 adds an extra challenge die, and so on. The probabilities work out so the attack still favors the attacker, but my a much narrower margin. That's had the effect of making the players feel like there is something to keep striving for, it keeps the game tense, higher rank characters can still get taken by a mass of bad guys, and the game doesn't start out with heroic characters that become superheroes by their 10th game.
Hope that helps!