I'm not sure I have a definitive grammatical answer, but in my experience as a native American English speaker, the "didn't" variant is more correct and natural. Saying
I haven't heard from him.
implies that although you have not heard from him yet, there is some expectation you might hear from him in the future.
Whereas
I didn't hear from him.
is strictly talking about what is in the past. By using
I didn't hear from him until now.
you are adding contrast between the past and the present.
I suppose "I haven't heard from him until now" might be ok, but it seems like the "until now" (aha, something has changed!) conflicts with the hopefulness/tentativeness of "I haven't heard from him" — how can you still be hopeful if you already know that the situation has changed?
re: "until now" vs. "till now" vs. "up to now":
"till" is an informal variant of "until". (although The Free Dictionary says that till
came before until
historically) If you say "up to now", people will understand you, and I don't think it is grammatically incorrect, but it is somewhat unnatural-sounding. I think the reason is that "until" is such a common preposition and has a very good match for this situation, that alternative forms don't seem right.
Hope this helps!