I mentioned pstat and qslice because they are free and from Microsoft's Resource Kit. There are hundreds of similar utilities out there. Check out this one from www.sysinternals.com : http://www.sysinternals.com/ntw2k/freeware/procexp.shtml called "Process Explorer". It gives you every possible piece of information about processes and threads on your system. But it still doesn't tell you which thread is which. The problem is that the only place to put that information is the thread's name, and Oracle doesn't set the thread name.
So, it's still up to best guess, depending on knowing your own situation. Often, the last person to log in gets a higher thread id, although numbers will eventually get recycled.
You can turn on more information in the task manager by turning on more columns, (such as PID, which is turned off by default).
Sometimes, SQL*Plus isn't completely dead, but just really, really, slow. If it is just hanging, give it a few minutes and it may be able to connect, (through local connection, TCP/IP or other network connections can time out). The virtual tables are stored in memory, so you should be able to scan for the SPID if you are patient. So try that before bouncing the database, but only if you can connect. You could also try bouncing the tnslistner, that will stop all clients, but not the database. Any client threads that are spinning will probably be left running. In that case, there will be only one thread, instead of a two-task thread pair. But there is also one background process which has only one thread.