My first custom Arduino board

What about putting the ICSP pins as pads along one edge, three pads on one side and three pads on the other side. Then you can use a regular 2x3 header and shove it onto the edge, program, and remove. No soldering needed. Someone wrote a piece on that:

This is another option, although it requires you to make a custom header:
http://www.daniel-spilker.com/blog/2011/04/25/isptouch-for-avr-microcontrollers/