You can also use smaller and cheaper Atmels microcontrolers. Just program them using an ICSP programmer (look at the "how to load a bootloader" topic, and also "arduino on ATtiny" if you want to continue to use the arduino IDE / libs).
You may also want to use other microcontrolers than Atmel's one (Arduino uno use a ATMega328P microcontroler), but I prefer atmel's MC, because I started with an arduino and I don't want to buy a programmer, learn a new architecture, etc..
So if you don't know about ICSP, and wan't to use cheap atmel's MC, you can start by loading a bootloader on an ATMEga328P, and then load your own sketchs without the bootloader. And after that, switch to cheapers and smallers atmel MC