[eluser]heavenquake[/eluser]
CodeIgniter's perhaps greatest flaw is also one of it's core features: PHP4 compatibility.
The fact that CI maintains complete PHP4 compatibility is great, because it allows for simple syntax and high portability. But it also somewhat impedes what you can do with it (that is, if you choose to write your code so that it's compatible and consistent with the rest of CI. I tend to do this with my generic libraries, while using PHP5 in my controllers and models, which aren't supposed to be ported anyway).
That said, there is nothing you actually can't do with CI. There are things that are more complicated than others, but almost everything can be made to work with a hook or an extended core library. I have implemented PHP magic autoload using a pre_system hook that allows for multiple levels of controller-logic (Page extends Blog_controller extends Template_controller extends Controller, (distributed over multiple files of course) for example) so it's not really that much of a problem. But it can be an annoyance for newcomers.