[eluser]danmontgomery[/eluser]
Welcome Stobyer,
What you're describing isn't a limitation of CodeIgniter, but of PHP... To be honest, I wouldn't call it a limitation at all.
The only way to transfer data across HTTP requests are to store the data on the server (sessions) or the client (cookies). It is technically possible to store objects in the session, but that data is accessible to the browser and there are definite security implications, not to mention the extra storage it would take to store a persistent object for each user. Cookies, besides being stored on the client's computer, have a size limitation of 4k.
Generically speaking, when an HTTP request is made, an apache (using apache as an example, it would be any webserver) instance is spawned, the appropriate PHP script is run, output is sent to the browser, and the process is killed. There are several benefits... For example, this allows for PHP to do it's own garbage collection, exponentially increases security, and it allows for hundreds or thousands of concurrent users on a relatively low-end machine, depending on the application.
Within each instance, dataless resources are reused. Each necessary part of the framework is only loaded once per request, and stored in memory... However, it's necessary that this happen for every request.
Hope that helps!