I can think of a couple of ways to accomplish this.  You could create 
unix groups that contain users that can see some shares, then remove the 
read/write/execute bit (or specifically the -x bit) for world/others on 
the directorys that you want hidden from others. these same directories 
need to have group ownership assigned to the group that is able to see 
them, and r/w/x bits set at the owner/group level. So, unix permissions 
may look like this:
drwxrwx---  user group ..... some_dir
as long as the x bit is not set on a directory, samba will not allow it 
to be visible at that permission level.
The other way you could accomplish it would be to make the directories 
not browseable, and have  user specific logon scripts that map the 
shares you want them to be able to access.