I understand Arduino: now what?
I agree with Joby - Arduino is great but I always feel stifled by the framework they surround me with.  I'd move on to use straight C on your Arduino and build a lot of the library functionality they provided from scratch.  I generally prefer depth before breadth - don't just start on another microcontroller family by using more provided frameworks.  Learn a bit more about how to implement some of these functions yourself.  

Start with a working program and replace the Arduino library calls with your own versions one function at a time.  You'll learn a lot about the control registers, timing, bit operations, etc if you havent' already.  Read the ATMega328 datasheet in depth - everything you need is in there.  

Try a different IDE like AVR Studio or Code::Blocks.  Learn the GCC toolchain.  Try more advanced coding techniques - unit tests, coverage, profiling, lint/splint checking.  Put an RTOS on the Arduino. 

A combined programmer/controller isn't a sign of weakness - it's just a design choice.  The only 'weakness' that could come from it is the lack of in-circuit debugging.  Buy an AVR Dragon and you'll have that licked for $50.