Design

All files (schematics, board layout, source code) are in the download page (see menu on the left). I have also explained the choices for most components and other engineering decisions inside the assembly guide. See the links in menu on the left.

I'll try to explain more decisions in a Q & A format below

Questions and Answers

Q: Why not use the "Arduino bootloader" instead of the USBaspLoader?
A: Arduino's bootloader requires an USB-to-serial adapter of some kind, which costs more money. Although you can in theory make a CDC class USB device with V-USB and replicate a STK500 compatible serial port bootloader that way, you shouldn't. This is due to the fact that CDC devices are not supposed to use low speed USB, and future operating systems may not support low speed CDC USB devices.
Also, since the behaviour of Arduino's bootloader is to wait a small amount of time to check for serial port activity before jumping to application code, it will get really annoying for your device to always enumerate twice, where as if my bootloader-activation-button is not held down at reset, my modified version of USBaspLoader will not bother enumerating.

Q: Why 12 MHz?
A: It's the best clock speed for 3.3V devices that is supported by V-USB, so this clock speed is perfect for both 5V and 3.3V operation. Of course you can swap out the crystal with another crystal with any other clock speed supported by V-USB. Just make sure you use the right bootloader version and change your compilation clock speed definition.

Q: Why did you choose to occupy port D pin 2 and 7?
A: PD2 was chosen because it is also the INT0 interrupt vector pin, which is recommended to be used by V-USB due to its high priority. PD7 is used because it's the most useless pin, the only other function it has is an analog comparator input. You can easily replace that functionality with a cheap 8 pin analog comparator chip, whereas the other pins have functions which are more complicated to replace.

Q: What can I do with PD2 and PD7?
A: If you are using V-USB to make a USB device, then do not use them for anything. PD2 will be configured as an input with the INT0 interrupt enabled. PD7 will need to stay pull-ed up. If PD7, the D- pin, was held at 0 volts for longer than a few milliseconds, the USB device will appear to have disconnected from the host computer. If you push the bootloader-activation-button, you are connecting PD7 to ground, so you can use that button as a re-enumeration button as well.

If you are not making a USB device but the USB connector is connected, then PD2 will be pulled down to ground (on the host side), and PD7 will be pulled up by the 1.7 kohm resistor. If the USB connector is disconnected, PD7 is still pulled up but PD2 is not.

For a better understanding, take a look at the USnooBie schematics (from the downloads page), and then take a look at the hardware chapter in USB in a Nutshell.