Something to consider, which I've been playing around with (trying to balance out) is simply eschewing classes, even generic ones, and going all-out point-based, while still being very much d20-compatible. This should address the issue with the Tiers that Tee'el mentioned, with hybrid characters like bards and rangers.

This, of course, has been done before (BESM d20 comes to mind), but the idea is to simplify it a bit.

Here's the idea: at every level, you get so many points, to allocate among the following groups.

1) Hit die / hit points (d4, d6, d8, d10, d12)
2) Base attack bonus
3) Skill points (2, 4, 6, 8, 10)
4) Feats (bonus)
5) Base spellcaster level
6) Base saving throws (one, two or three preferred)

For each level, you can only allocate points to each group once -- however, you don't need to allocate points to every group. This is more flexible than the Tier system, which, as put, requires something of each, where you really may not need to bring up spellcaster level. Unused points roll over to the next level.

This allows the flexibility of, say, having a great spellcaster with tons of hit points, but crappy BAB and saves, SP, et cetera. Additionally, this allows for having two or three preferred saving throws (like Paladins), which the proposed Tier system doesn't.

The intent is to make it more flexible, while also providing better checks and balances, by allotting just a certain amount of points per level, for example. One could also mix and match (buy a couple levels of d8 HD and then some of d6, or maybe just a few good spellcaster levels and then move on to something else, kind of like multiclassing). I'd suggest only allowing buying of one HD per level, one BAB per level, et cetera. This could be handled by just allowing for a maximum points per level (which could be different per group) or, instead, maximum points per group, dependent on level.

Here is the kicker though, to ensure balance: there needs to be a basis for what one point does. So, say, it may take four points to get +1 BAB, but five points to get +1 caster level, or maybe eight points to get a bonus feat, or something. With just six groups, it's not too bad.

Depending on the level of extraordinariness of the PCs in the campaign, you could also adjust how many points you get per level.

You could just award points as you get them, instead of getting a bulk amount of points at level-up (using levels just as a measure of, say, when you can get another feat, another HD, another caster level, et cetera). This also is a better analogue to the actual process of improvement that would happen in real-life, and makes it better to hold onto points to say, save up for another +1 BAB. As a caveat: the PCs would be a bit more powerful than their level suggests, since they'd really be effectively somewhere between that level and the next, but this could easily be handled by some good DMing for setting up slightly more difficult encounters.

It also allows the DM to have a bit more realism control. For example, if a character hasn't been doing anything to raise their skills, like training or attempting the skill, the DM could rule that they couldn't raise it -- then the player could, instead of allocating points to that skill, allocate points elsewhere (such as a bigger HD) or hold on to them. The same could be said for feats (typically requiring training), spellcaster levels (training if prepared, practice if spontaneous) or even BAB (either training or practice/combat).