While it's a fine idea, I honestly do not see why. IMHO when you're developing some firmware for MCU (no matter AVR, or any other microcontroller) you should focus only at task that MCU has to do.
With only 2KiB if RAM and 32KiB of program space (as ATmega328, running on Arduino Uno r3 provides) there are no much space to waste for OS. And since AVR's program space should be considered as read-only memory (yes, there are facilities to rewrite it, but they're slow and have limited write count), it's not likely you'll load executables at run-time anyway.
I've built a few MCU-based devices (most noteworthy one being IR remote controlled dimmer/switch for lights in my room, which is operating as I type this). There's really no need for multi-threading, most of the logic turns out to be interrupt-driven anyway. I have yet to see a device, where main loop does much more than calling
sleep instruction (AVR's equivalent for
hlt) repeatedly.
While there are some OS-es available already (
FreeRTOS, for example), I've still have not found a reason to use them. I have not even adopted Arduino libraries. Just
gcc-avr and
avr-libc is all that I need. And even then I sometimes revert to plain AVR assembly.
If something looks overcomplicated, most likely it is.