Keeping in mind what has been explained above, I'd like to give some examples:
I think "почему" and "отчего" can be used interchangeably.
Like for example: "Почему никто не улыбается?" and "Отчего никто не улыбается?" (Why nobody is smiling)
"Отчего люди не летают?" (Why human beings can't fly?) Usually "отчего" is used in such kind of questions. Although it can be replaced with "почему" without loss of meaning, but cannot be replaced with "зачем".
"Зачем зачем ты поставил сюда молоко?" ("Why did you put milk here?) We want to investigate the reason.