Actually there are many ways to expand the number of IO pins. This is actual for low pin count microcontrollers like attiny13. This one is more likely experimental, but works nicely. Technique uses two 8-bit shift registers that successively turn any of 16 LEDs.
The trickiest part is to send data and clock shift registers by using single MCU pin. In order to achieve data shift – data pins has to be clocked. It works OK when clocking logical ’1′, but what to do when we need to clock in a ’0′. This is solved with delay circuit which consists of 100k resistor at shift register data input and capacitance of input pins. Selecting right duration of pulses it is possible to send clock signal while input signal due delay is still in low state. As circuit is cascaded, there should be possible to add even more shift registers and have more I/Os that are driven by single microcontroller pin.