Before starting with malware analysis, it is necessary to have a solid grasp of Assembly and C/C++. I provided some recommendations in my coding resources page on how to learn them.

After mastering them, one can start analyzing malware with the following:

Books

For the more experienced:

Those regarding reversing tools:

Websites

Tutorials and training:

Analysis blogs and walkthroughs:

Advice on getting started:

Tools