Character servers being rebooted or are busy:
It is possible the character server received too many requests at one time and may need a few minutes before it will be able to get your character information. The most common time for this to happen is right after a server is brought back online after maintenance or rebooting.
The character may have been deleted. Always make sure your account is protected. If in doubt, change your password and make sure it is a combination of letters and numbers and longer than 4 digits.
Blizzard Entertainment will not resurrect deleted characters.
Diablo II Battle.net Characters track their own expiration status. For example, the character selection screen will show an expiration period of 10 days for any newly created character. Once you log 2 hours of in-game time on that character, the expiration indicator will disappear. When the character comes close to its expiration, a new message will appear displaying the amount of time before the character will expire. Characters will expire after approximately 90 days of inactivity. Be sure to keep your characters active by playing each of them in a game at least once every 90 days. We are not able to restore expired characters for any reason.
Unfortunately MartyT is correct, characters that show up invisible are dead hardcore characters that failed to load the normal ghost icon due to intense latency at time of death. While this can be somewhat cool looking for a channel character, it really sucks when it happens to a character you enjoy. I'm sorry for your loss, but unfortunately Blizzard is unable to restore dead hardcore characters no matter the cause.