The complete detailed building instructions can be found here in this 94-page pdf file.
Warning: it is about 9MB in size. The design is not entirely compatible with the standard NXT Mindstorms Kit. This design relies on two touch sensors, several 1×9 bent liftarms, and as far as I can tell from Peeron, the NXT Kit has only two. This may require a little redesign. Other compatibility issues and their solutions can be found in the Parts List in the instructions.

The main file is called DriveSmart.rbt. Drive Smart runs four threads:

Drive Thread
The Drive Thread (lowest one of the four) drives until a warning flag is set by one of the other
threads. It then waits until it gets an all clear message via the Wait Until Free block, and then
it starts driving again.

Bumper Threads
There are two threads that monitor the bumpers.
The reaction is only activated if nothing else is currently commanding the robot. In this case the
bumper has been pressed and the robot will veer away from the hazard.

Ultrasound Thread
This thread monitors the ultrasound rangefinder.
The reaction is only activated if nothing else is currently commanding the robot. When the robot
comes too close to a hazard, the robot is commanded to stop. It then looks both ways and then turns
in the direction with more room. If the robot is within 10 cm of a hazard on both sides, it then
backs up.

The robot can roam about a wide variety of rooms and not get stuck.
He does not detect stairs though! So be careful.