When making a large volume of Arduino-based projects that don't use all the features of the ATmega328, it can start to seem like a bit of a waste. One way around this is the use of the smaller Atmel ATtiny microcontrollers - they're much smaller and thus cheaper, however with a reduced feature set.
Nevertheless if they meet your needs, it's easy to program them with the Arduino bootloader - and a great way of doing this is with the shield created by Kevin Rye. He's taken the simple programming circuit required and published the details to make your own Arduino shield version that works with almost any Arduino-compatible board. Which leaves you to upload sketches to the ATtiny and get to work, for example:
If you're new to Arduino and want to join the fun, the first step is a solid board for your projects - our Freetronics Eleven - the Arduino-Uno compatible with low-profile USB socket, onboard prototyping space and easy to view LEDs: