Note: This is not to be considered a fix for the existing spells or the classes that cast spells.
The idea is that all spells are at-will, but are divided into three types: Daily, Encounter, and Instantaneous.
Daily spells are spells that a mage generally finds a use for every day or most days. These spells are the easiest to maintain and can last several hours.
Encounter spells are more potent spells that a mage generally finds a use for every so often when a difficult task arises. These spells are more difficult to maintain and can last several rounds.
Instantaneous spells are the most powerful spells, used only sparingly by mages because they can be exhausting. These spells cannot be maintained and instead have lasting one-shot effects.
So, mechanically, let's say a mage has a number of caster levels at any given time equal to his class level. When he casts a Daily spell it can last up to 1 hour per class level, when he casts an Encounter spell it can last up to 1 round per class level. Casting a spell requires the investiture or expenditure of caster levels. Daily and Encounter spells only require the investiture of caster levels, a number of levels equal to the spell level. Casting an Instantaneous spell requires the mage to expend caster levels equal to the spell level. Invested or expended caster levels can't be used to cast further spells. Invested caster levels are recovered when the mage's spell ends, while expended caster levels are recovered only after 8 hours of rest. Spell durations would be simplified to only fall in the range of 1 hour/level, 1 round/level, or instantaneous, and all non-instantaneous spells would be dismissable.
Of course, this system shouldn't be used with existing D&D 3.5 spells or spellcasters, but I could imagine something like this working for the development of a new spellcasting system. Thoughts?