From reading the ATMEGA168 data sheet it certainly seems possible if I were to program it in assembly, but I think that would mean I would have to get a new programmer. I'd prefer to just program the ATMEGA using my Arduino board.
Someone please correct me if I'm wrong but my understanding is that you could write a pure-assembly program and upload it to the chip on the Arduino using the tools supplied with Arduino.
Until a couple of days ago I hadn't realised this but my research indicates any
.hex file can be uploaded to the chip on the Arduino board.
My notes on the topic: http://code.rancidbacon.com/Arduino#Bootloader10
But if it met your need, inline assembly sounds like a much better option.