the same advice is used for other overloaded programming pins (such as tx/rx which is used for the inline 6pin 'arduino' programmer, or the 6pin 2x3 isp connector).
you want to have a high-z buffer (or play the resistor trick, which I don't personally love) that you can detach your i/o devices from 'a bus' while you program the controller chip. then, when the controller runs, it can either enable the line buffers (ie, tri-state) or you could just have hard jumpers onboard, but that gets tiring after a while.
point taken, though; think about the lifecycle of software update and if anything on the bus can be in the way of that, you'll have to have an approach that removes the devices at the right time.
other misc tips while I'm on the subject: its been mentioned to use silk screening and mark polarity (lytic caps, etc) but some pkgs like eagle tend to want to put the plus sign inside the cap's circle. once you populate that cap, the plus char is now hidden and you can't easily desk-check things. I always like to add another '+' char OUTSIDE the cap circle footprint so that even when the part is installed,I can still see the indexing mark. same with chips and diodes and everything else that has a footprint that might cover up an index mark.
add lots of test points, even if its just an unfilled pcb via.
add lots of diag leds and jumpers so you can change options or enable a debug mode via a simple jumper change.
on any higher freq test points, have an eyelet that is a local ground neaby within a few mm distance, so you can use a spring clip probe instead of the 1" of alligator clip/lead that adds too much inductance for high freq grounding use.
oh, this goes without saying but so many forget this: HOW ARE YOU GOING TO MOUNT THE BOARD? ie, add round screw holes on the 4 corners of the board. remember, it will be mounted somewhere. I see lots of boards (like the open-bench logic sniffer board; it has nearly no holes and mounting in a box is difficult) that forget about the holes. its one of those 'doh!' moments but lots of people seem to forget this simple thing.
if a chip is hard to solder (fine pitch) consider making it a module that has its own chip carrier and follows .1" standard spacing. socket it so that if it blows you don't have to do serious board rework and can just replace the blown chip on a new carrier board. daughter boards are a great concept to follow.
use tlv diodes to limit static on front panel buttons, or even use opto couplers. any outside world interface may also benefit from optos (I have a project where I'm allowing ttl serial i/o from a user to the board; and I'm using optos to allow 3.3v and 5v to mix but also no ground loops and no direct connection from control system to the controlled system). if you are using fast i/o, remember that most opto chips are slow and you want nanosecond speed, not microsecond, so pick a faster opto isolator chip (they are only a dollar or 2 more, at most).
also, avoid all parts from ebay, especially china. goes without saying, but they are all likely fakes or factory rejects or even used parts that were manually removed! buy from mouser, digikey, jameco, etc. even stuff that 'should not matter' like IC sockets will be surprisingly low quality and even things you think 'should be ok' will break on you if you buy ebay china parts. its tempting, but never use that kind of part if you are building something for someone else or if you need it to last. some of us have 2 bins of parts: the junkers that are 'just for us' and for informal testing; and the parts bin from trusted sources that you will use for real builds.
and if you do send a job to china to have your thing built, never give them all the plans. divide it up so that no one place has your whole design. make it so that you can have 'diag code' loaded for the manuf testing guys, but load your own code here (in your own country). its true about china theft, so know that going in. if you break up the project into a few different boards or modules and don't give the same work to all your sub-contract vendors, you will retain more ownership of the project over time, that way.