Hi Daniel,
As I see it, there are two types of "load-balancing" you might be talking about.
The first is what Mitch is talking about. He has multiple application pools, one for each virtual directory. Then a common "entry point" into the app, where there is some kind of logon form which decides which virtual directory should handle that particular load request. After that has been decided, that particular user (session) stays with that virtual directory until it's destroyed or disconnected. The next user logging in, might be directed to the same or different virtual directory, and will stay there until closed too. For this type of "load balancing" you don't need a stateserver. For this type, then in most cases you can add servers at will, unless there is something within the application that prevents it. If they just need a connection to a common database for their operations, this should in most cases be possible.
The other is an actual load-balancing where you have multiple servers in a farm where a user's session might be transfered from application pool A to pool B without loosing the session and without the user knowing. For this type you need a stateserver.
Does this help ?
Palli