Scratch:
http://scratch.mit.edu
It's designed for kids, but don't let that fool you. It's an excellent tool for getting started in gaming and animation. It's actually better than gamemaker, and totally free. You can easily use a number of built-in sprites, and you can import any image you want to use as a sprite. It also has a built-in graphic editor and sound recorder. The programming is done with a tile-based approach, so there's no typing. It's powerful, but reasonably easy to figure out. The output can be posted on web pages as Java applets.
If you want to go 3D, you can look at Blender:
http://www.blender.org
This is a full-blown 3D modeling package. There's a learning curve, but it's worth it. Blender features a tile-based programming system, but you can also program directly in Python. Blender is available for free for every major platform.
If you're ready for a real programming language, Python is a good choice. It's free, works on any platform, and is a reasonably easy language to pick up. The pygame library greatly simplifies graphics, and I've written an extension that makes games even easier to write. (See my website for more on this.)