Four theories:
His name actually is Who, and he doesn't tell anyone because he gets a kick out of people accidentally saying his name all the time.
His name is something really embarrassing or girly, like Lucy or something. He doesn't tell it out of keeping his pride.
His name is time locked back in some period of time, maybe the Time War, and he literally does not have the ability to say it seeing as how, wibbly wobbly, it doesn't actually exist. (I find this one more plausible than my other theories.)
His name is Fortytwo, or some variation of that. This actually makes sense (sort of), because in Hitchhiker's Guide to the Galaxy, the Ultimate Answer to Life, the Universe, and Everything is 42. There, we just don't know the Question.
In Doctor Who, the Ultimate Question, the one that cannot be answered for yaddayadda reasons, is, well, "Doctor who?". Combine them together, and we have both the Question AND the Answer. "Doctor who?" "[Doctor] Fortytwo."