The maximum number of significant tasks I can work on concurrently is two.
The optimal number, of course, is one. Anyone who has read Peopleware will be aware that forcing programmers to task-switch frequently is a recipe for destroying their productivity. However, today I was working on two tasks that didn't require significant switching: running some long-lived tests on one machine while I coded on the other. I could hold the state from the second task in my head while I went to check on the first.
Still, it was two significant tasks running concurrently.
Near the end of the day, the boss walked up to my desk and asked me how a third task (that had neatly slipped my mind) was progressing. What I experienced could only be described as a stack overflow. The attempt to add the third task to my stack caused the whole mess to fall over, leaving me babbling like an idiot for a few seconds while I tried to reconstruct enough state to allow me to provide an intelligent response.
So that's it. I have a stack for significant tasks that is two deep. Any more and I crash.