[edited]
Well, I follow the philosophy that *all creatures should be written as playable character races first*, and their 'adversary' aspects should be secondary. The only creatures which should have strictly 'adversary' stats are the brainless ones like green slime. I have PCs fighting NPC humans (not in monster manual, folks!) much of the time, and I end up treating most of my monsters as NPCs too, who may sometimes join the characters, etc. etc.
So no getting rid of my ECL ratings!
The 'monster class' design is pretty effective if you want to use them in lower level play. In general monsters with high ECLs should really be introduced in higher level play, though, which is kind of obvious.
If anything, the problem I have is that of determining Challenge Ratings for NPCs in combat. Level isn't nearly accurate enough to make the encounters work. Some 10th level characters are a level 12 challenge, others are a level 8 challenge. (The biggest issue is stats variation, but there are other issues too, such as equipment: rough guidelines on how much CR is added or subtracted by better/worse stats and more/less combat equipment would be amazingly useful.)
The following should be the design philosophy keys:
(1) Accept that if players are playing 'weird' races, they *aren't* going to be balanced against each other. Often they will be super-weak in some types of encounters and super-strong in others. This is no different than the fact that wizards are much weaker against some foes and much stronger against others. It's just going to be impossible to maintain perfect balance at all levels all the time.
(2) So, add tips regarding such issues to the rulebooks, specifically the advice to the DM! "At low levels, this race's racial levels give him a strong advantage in type A encounters due to XXX, so avoid those if you want balance; but at high levels they become worth less than regular class levels because of YYY, except in type B encounters, so use those." In 2nd edition everyone was unbalanced; we dealt with it.
What you really need to do is to put in the tips to the DM so that the DM can *personally* balance the characters by customizing encounters. Every monster race, with ECL, is fairly balanced provided the DM makes a special effort to include encounters which make the monster race's special abiilties useful. (For instance, having flight as an extraordinary or natural ability can be kept valuable after the party gets it as a spell-like or supernatural power, by intermittently dropping dead magic fields on the party -- that's the sort of reason dead magic is in the book!)
On the "DM tips" side, again, there is a lot in the SRD which exists specifically so that the DM can 'personally' address balance issues as they arise in the campaign (rust monster, anyone?).
But oddly the DM tips in the old editions never actually point you to these methods of 'hand-balancing'. Putting in some more explicit tips for the inexperienced GM on how to change future encounters using existing SRD tools, in order to rebalance the effective power of a party, would eliminate a lot of the complaints about 'unbalanced' everything, including ECLs.
But it's still worth addressing the mechanical problems if possible, and I have some serious ideas about this.
The other irritation of ECLs is that they screw up the experience point progression; if a level gives you powers which kind of 'expire', it ends up being sort of worthless later on. This could be addressed by eliminating the 'double duty' of the ECL. It has 'double duty' because it reflects two things: (1) It determines the effective character level for purposes of determining encounter difficulty and hence XP; (2) it determines the effective character level for the costs of levelling up. For an ECL power which 'expires' in usefulness, you really want the ECL for purpose 1 to slowly vanish, the way added template powers in challenge ratings work (adding flight to a lvl 1 character adds a lot to their ECL for this purpose; adding it to a level 15 character does almost nothing.) For purpose 2, this doesn't work because players don't like losing XP -- but that doesn't matter due to the way the system works. The player can keep the exact same XP, hit dice, and class levels, and simply have the ECL drop.
Suppose, for instance, that when a flying character hits ECL 6, his "level" for purposes of determining appropriate CRs and XP drops, but his XP and status otherwise stay the same. He'll get more XP than the rest of the party, and this will make up for the "handicap" of having those "now-mostly-useless" levels. In essence, he'll start catching up, without the accounting being particularly complicated.
In fact, this sort of 'effective character level for purposes of dealing with challenges' idea has a lot of possible applications, including dealing with characters with vastly overpowered or underpowered stats. After all, the DM is in fact allowed to assign XP as he chooses.