There are lots of ways to do this.. these approaches can take a lot of time of course and some strategies will require that you level characters to approximately their same level. On the flip side, if you want to avoid detection - pay attention to these methods so that you don't accidentally reveal your own alt's names.
Currently, there aren't any WoW Addons that can automatically search names and find alt character names. However, it is a very logical process and there's no reason why an addon couldn't be created that does this (census scripts practically do this already). The reason that there is no "Alt-Tracking addon" is for obvious reasons: there's little need for it and it could be used for nefarious purposes.
Note: I'm going to assume that the reason you're reading this post is because you don't know who they are, you're not actual friends with them, you can't interact with them in the real world, and you don't want them knowing that you're trying to find their alt names.
You'll be using "Add Friend" A LOT starting with their main character (or known alts).
As you build up a list of possible suspects, you'll be tracking their logon/logoff activities until you're 100% certain. Get a pad of paper too.
Keep in mind that a player can have 2-3 characters logged in simultaneously (it's a way to throw off players tracking you) on the same account simply by launching multiple WoW instances. However, there's an approx. 20-30 second delay before the last account gets disconnected. (You may already be aware of this technique for self-buffing your own characters.)
If you know you're being tracked, you can actually keep 2 of your characters "logged in" indefinitely by switching back-and-forth between two WoW.exe instances and logging into your 2 characters every 20 seconds or so. It's very annoying and difficult to tell if they're actually monitoring you though. =]
The easiest method, but it's very difficult if you don't want them knowing anything about you. If you can befriend them, and they have Real ID enabled (voluntary activity) then you will have access to their "real name", email address, and all alt character names. Problem is, they'll have full access to your information as well.
If you have a fake WoW account setup, and become really good friends with them, you might be able to convince them to enable Real ID (describe the benefits) to get access to their account details.
Their Character Name
Look for common trends in their name, and use it as a search pattern for other character names once they log off.
Add the possible suspects into your friends lists and see if they logoff/login at the same intervals.
If they have a character named Sinbank, for example, chances are they have an alt with "Sin" in the name.
All of their character names might be 2, 3 or 4 characters long in length for example.
They might favor a certain alt-code in their character name.
All of their characters might have the same subtext: tbone, dogbone, bonesdude, boneym, etc.
All of their characters might be references to the same TV series, movie or novel (Harry Potter or Lord of the Rings references).
All of their character names might have another common trend - like Guild Names (if they created multiple guilds for bank slots), they might be verbs (e.g. jump, shoot, destroy), they might all be related to ego (e.g. godly, godlike, amazing, beautiful, awesome), etc.
If they have an ego and they're active trade chat users, they can't help but compliment themselves. Watch trade chat (after they log off) and see if someone else continues the conversation or agrees with "that last poster."
If they're in competition with another player, they'll log into an alt and insult the prices of their competitor. "There are better prices on AH." - Meaning their alt or main.
If you know what products they're selling on the AH and they're the lowest sellers, wait about 20 seconds after they logoff and starting posting competitive pricing on Trade Chat (use your disposable toon called ___bank). You might be able to lure them into responding or insulting your prices - or they might even try to buy them from you using their alt. Either way, ignore everyone - but add their names and track them later.
The Battle.net Forums
This is similar to Trade Chat conversations. Use wowarmory.com to find all of their forum posts, and see if any other characters respond to their posts in a positive light. Sometimes players will respond to their own posts under an alt's name to defend themselves. Also, sometimes they forget to change their posting character and will accidentally *BUMP* their own posts.
Use WoWArmory to find out character names that are in their guild. It's very difficult to go through each name to find a likely suspect (unless they have similar character names), it's easier just to find someone in the guild that can invite you and work your way into the guild.
Private message them with your disposable or alt character and join the guild. Hopefully, they won't have strict recruiting policies. Alternatively, you can become friends with their recruiters. There are many techniques to get into a guild, but I'm sure there are plenty of other sources out there. It will take a while to write them all up.
Monitor character names that login/logout based on your target's login/logout trends. If they have any alts in that same guild, you'll immediately discover their names.
If they don't have any alts in the guild, make friends with various players (e.g. help them with professions, farming, providing mats/gold/crafting services, power level their alts, etc.)
After a couple days, start asking questions during periods when you know the player is offline. Ask, "Didn't x have an alt with enchanting? I need a bunch of stuff done and they needed to level it I think". Or, "I'm trying to get a hold of x, does he have any alts online?" etc etc. Get creative. =] Usually someone in the guild will know some of their alt names.
Who They Party With
Monitor who they party with and which dungeons they frequent. Chances are that the same group of players will bring in their alt characters for leveling or farming.
Like I said, your list of friends is going to get really big. You will want to know WHO they frequently associate with, and monitor their activities as well. =]
You might see their level 85 best friend care-bearing a level 55 (with maxed professions) through dungeons or quests. That's a very good suspect.
What They're Wearing
If you get a confirmed list of alt-character names (or best friends), inspect their gear and see if any of the items were crafted by other players. Then, add those players to your Friends List and start the process of elimination again. Players with multiple toons that craft will make their own gear for their own characters and friends, especially if they're trying to save money (e.g. active AH users.)
This is one highly effective method to getting their alt names. Their main, however, will probably be equipped in dungeon-drops, which doesn't help you.
Bait Their Alts/Main Into PVP
It's pretty easy to locate players if you're on the same faction, so use this to your advantage to kill their alts over-and-over. Eventually, they'll login with other toons (or their main) to camp you.
Obviously, this works best with stealth classes since you can safely watch their corpses while hidden (until their other toons show up.)
Since you're not on the same faction (and probably don't want to spend the time logging in and out to see what they're up to), you can still create a macro to determine whether they're logged in or not.
Simply use /invite *enemy player name*
It will either say 'You can't invite them' (meaning they're online) or 'Player Cannot Be Found' (meaning they're offline.)
While We're On That Note: AH PVP
If you're a big AH user and want to eliminate the competition (or simply make life difficult for them), create yourself a high-leveled toon from the opposite faction. A rogue works well.
After you log off, and they log back in to undercut your prices - kill the Auctioneers with your character and vanish. Rinse and repeat whichever Auction House your competitor visits too.
It's also nice if they've just hearthed back to town (you'll know their schedule by now) and they're still flagged for PVP. They'll be so busy with Auction Profit Master running that they won't notice you killing them. They're very easy targets.. not only will you feel better, but while they're corpse-running or waiting for their auctioneers to respawn - that just means more sales for you. =]
Watch the Auction House
Watch all items on the Auction House that their main and known alts post. Find out who crafted them. (They might craft items, but have one single account as the AH poster for example. It's an easy way to find out alt names.)
If they're posting PVP sets that were crafted by other player names, chances are that those are his/her alts.
Watch what they buy/sell on the Auction House, find out as much about their professions as possible. If they're constantly buying out herbs, but they don't have an associated profession, chances are that they have an alt who is a Scribe or Alchemist.
(If they're only buying Azshara and Heartblossom herbs, chances are that they have a 80+ toon who is an Alchemist/Enchanter.)
Once you know the type of mat/item they're primarily interested in, my favorite activity is to post bait items (ie, a honey pot) on the Auction House right after they log out. Wait about 20 minutes to see if someone else quickly snags them up. If their main logs back in, remove the items from auction. And then repeat after they log off again. =]
The other option is to post competing items (undercut) right after the log off for a MUCH better price (you need the user to buy them all out rather than just undercut you). This works really well with Inscription, especially since you'll make a little profit if his/her alts buy them all out. Once again, pull the items when the main logs back in.
Sell Them Services
Once you've established the types of mats they need to buy (e.g. herbs for inks, leather/minerals for crafting, enchants, etc.) offer to be a regular provider for their needs. Create a level 1 character named "Funbank" or "xyzbank", and whisper them saying "Hey you bought a bunch of my herbs the other day.. if you want, I can keep getting them for you and COD them." Establish a fixed rate, and then ask if you should mail directly to them or one of their alts (that does the milling process for example.)
You don't even need to get them anything, just delete your throw-away toon if you wanted.
Or, you could sell them mats that you buy off the AH for cheaper prices, to gain their trust over time. It's also a good icebreaker conversation to get introduced to them, and then at a later date you can start getting more information about them and their other alts.
For example, joining their guild through them, or asking if they have any crafters to help you out (e.g. "Thanks for buying my stuff! Do you have any enchanters that need to level up btw? I have a bunch of (soulbound) gear that needs enchants." or "Can you craft this item?" then when you get the item, you'll see who crafted it.) There are a lot of ways to get them to log into their alts to help you out with something, if it's worth their while.
Creatures of Habit
This works surprisingly well depending on their professions. All players are creatures of habit, and whatever they do on one toon they'll repeat on all of their others.
They might frequent the same spot in Orgrimmar for example, hang out with the same people, frequent the same vendor or Inn. You have to follow them and visually monitor what they do to get an idea of their patterns. They might even login/logoff in the same area with their main and alts. If you see one character logoff next to a mailbox and another one log in - add them as a friend. =]
If you know they have a crafting profession on another toon, hang out next to the trainer / goods vendor / blacksmith / etc and see if a character logs in (or travels to the area) as soon as the main player logs off.
My other favorite process is to watch Jessica Sellers (Ink Trader) in Dalaran. There are hardly any people in Dalaran, and when a player (who posts Glyphs/Cards) logs off and I see a new player login just outside the Scribe shop - there's a 99.9% probability it's their alt. I've caught TONS of players this way and made some amazing discoveries from my competitors. =]
* Update: Relevant training video attached.