There are some free options:
2D animation:
Creatoon (used for cut and paste animations for Children's BBC):
http://www.creatoon.com/
Synfig (2d animation app): http://www.synfig.org/Main_Page
Pencil (more traditional animation): http://www.pencil-animation.org/
Stick figure animation: http://www.geocities.com/peter_bone_uk/pivot.html
Pixel animator: http://www.animpixels.com/
A great relatively inexpensive animation package would be Anime Studio Debut: http://my.smithmicro.com/win/anime/index.html
As for 3d animation software, your best (free) bet is Blender:
http://www.blender.org/
Watch Big Buck Bunny, which was entirely animated and rendered using Blender: www.bigbuckbunny.org/
3d animation takes quite some time to learn properly - some resources for learning are:
Complete online video course: http://www.gryllus.net/Blender/3D.html
Classroom tutorial work book: http://www.cdschools.org/54223045235521/blank/browse.asp?A=383&BMDRN=2000&BCOB=0&C=55205
Blender can also be used as a video editor, btw.
For effects software Wax may be helpful (though quite simple):
www.debugmode.com/wax/
Awesome effects animation : TouchDesigner.
http://www.touch077.com/Products/
You will need a quality video card to use this one. Nvidia preferred.