You can't prevent them from seeing all the databases. However, once they are in the database, with SQL Server 2005 any queries against metadata will only return to that user the objects they have access to. So if they don't have access to a particular table, SQL Server won't show them anything about it.
K. Brian Kelley
@kbriankelley