Any time your application has tasks that can be divided into distinct groups, it's a candidate for multi-threading. Be warned that it's a dangerous game, though - for every article you can find about the advantages, there are two about getting bitten by a multi-threading implementation - it can create bugs that only occur in certain configurations (on the users computers), or worse, can't be duplicated in the debugger because the act of slowing down execution is enough to cause the bug to fail to appear (race conditions are notorious for this behavior).
That warning aside, multi-threading can be a huge boost to both the actual and the perceived performance of your application. These are .NET specific, but give a general primer explaining the advantages of background threads and keeping your UI responsive: