The main problem with threading is the way it interacts with multiple worker processes. You have a free account, so there's one worker process handling your requests. If you had a paid account, there could be multiple worker processes. None of them would really be aware of the others in any useful sense (in theory, they could even be running on different physical machines). So if you were planning on having a fixed number of background threads processing stuff, there would have to be one background thread per worker, which probably lead to coordination issues. Different hits from a specific browser session could go to any one of the worker threads, so if a task was kicked off by one user, there's no guarantee they'd ever come back to a worker process that knew anything about it.
(Of course, there are simple cases where this just isn't a problem, like the one that started this forum topic -- spinning off a short-lived thread to perform a simple task like sending an email, and not requiring anything to monitor its progress. That's something we might be able to look into.)