One of my textbooks said that you cannot use the particle は with 何 and undefined words of the こそあど.
Yet I'm sure I've heard これは何ですか。 many times before, and これが何ですか。 sounds unnatural to me.
What is the correct usage?
The key word is "undefined". は is a topic marker, and you can't switch topics to something you don't know about yet.
In 「これは何ですか？」, は is acceptable because これ is a specific, definite thing (at least in context) and 何 is about asking for more information about that thing.
In「何が好きですか？」. the 何 isn't "definite" to the speaker because it is a "placeholder for anything" 何. Of course, 好き puts an additional constraint on it, and if you re-arrange the sentence, you can say 「好きなものは何ですか」 because 好きなもの is definite enough to switch topics to with は.
On a side note, が is the subject marker. Every complete phrase must have a subject, so you might wonder why sometimes there isn't a が. Sometimes it is because the subject is implicit... but sometimes it is because the subject is the same as the topic.
For example, in 「私はアメリカ人です」, 私 is both the topic and the subject. That is, the actual meaning is (note: this is not correct Japanese for basic subject-marking use of が!) 「私はがアメリカ人です」. But Japanese has a forced grammatical convention where the は and が particles collapse to just は when the same noun is being marked as both subject and topic (except in certain other special usages of が). In other words, が MUST be abbreviated out in these cases. This is consistent with the view presented on p.118 of "A Dictionary Of Basic Japanese Grammar".
In most cases, が is used before a question word (何、どれ、etc.) as opposed to は. This is because が has the nuance that it emphasizes this word which is the same reason が is usually used when answering a question (ex: "誰がやったの？" => "先生がやったよ")
Depending on the nuance trying to be conveyed, が or は can be used naturally after any non-question こそあど words.