The growing social network systems, notably Facebook and LinkedIn, have become better and better places to find old friends. And we're also seeing people search engines, such as zabasearch and the new spock.com to look through databases. If you're determined, you can find many folks.
Facebook lets users develop applications, but one I have in mind would not work as a developed app, since it requires access to people who have not installed the app. Right now on Facebook, you can type in a name and see all the people with that name (and variants) as well as their picture. You see their networks which sometimes tells you where they live, what school they went to and perhaps where they work. In theory you can't see anything else, including useful stuff like their age. You can, however, see their list of friends in most cases.
Often you will find many people with the same name, and this will only get worse as the systems get bigger. If a name is common it can make the search very difficult. Facebook uses an algorithm to put your likely hit near the top (it seems to be people with things in common with you, like locations, hometowns, etc.) which is a very good idea, but even so, you can still be in the dark, especially if the picture thumbnail makes it hard to see the face, or it's been 20 years.
You don't learn things like their age or hometown directly, which would be a privacy violation. You can often guess it by looking at the list of friends -- if they have only young friends still in school, they are probably young. If many of their friends are older, they probably are too. If many of their friends are from a town, they probably lived in that town or still do.
So you may end up sending a blind E-mail saying, "Are you the Fred Jones who went to Valley High?" But if the number of matches are too high that doesn't work either.
What would be nice would be a way to specify you are looking for a person with a given name, and to provide other data like their age and perhaps school. Then, all the people who match that would get a notification with the brief query. This would not be a full blown e-mail, they would just see a notice that somebody is looking for "the Fred Jones born around 1965 who went to Comdex." and if they were that Jones they could follow-up on it (or ignore) and if they weren't they would not see it again and could block seeing any further notes like this.
However, the real gold would come if the query could be stored, so that every new Fred Jones who joins sees that, and perhaps finds people already waiting to reconnect.
Key here is that while it would be a privacy violation to let me search for "The Fred Jones born around 1965" because multiple queries would let you pull out the person's age (which they have hidden from strangers or even friends) it is not so much a problem to present the searches to the people and let them decide if they want to respond.
You tune it so you would hopefully be less bothered by these queries than you would be the direct "are you the..." queries you would get. Of course, the more tuning information both parties give, the fewer people to get a notice. In fact, you could require the searcher to come up with something that only notifies fewer than some set number of people. So if there are 300 Fred Jones, you can't bug them all, but you could make the query of the 10 who are closest in age to a given year, for example. There are ways to game this a bit to search for private info, but it's harder, and users who respond can be notified about what they will be confirming by responding.
The "search for new users matching a name" query could be a Facebook app, but the above could not be, unless it were an app only for those who want enough to be found this way that they install it. But the main goal is to find people who don't realize they are being looked for.
LinkedIn is better at qualified queries, but doesn't let you email the people who match, except for money.