This answer mostly applies if the machines in question are on different subnets. For a home network, this may occur if you have machines on either side of a NAT gateway, or if you have more than one device providing NAT and/or DHCP services.
Windows networking has traditionally separated "browsing" (seeing a list of available server names) from "name resolution" (translating a server name into an IP address you can connect to).
It sounds like browsing is working for you, which is good, because that's usually the harder part to get working between subnets (it requires a machine on . So let's go right to name resolution.
Windows networking has two primary mechanisms for name resolution: NetBIOS Name Service broadcasts on your local subnet, which only works on the local subnet, and WINS, where machines from any subnet can register their name->IP mapping with a central server, that machines from any subnet can query.
If you can see a machine in the browse list but can't resolve it's name, it's probably on a different subnet, but you don't have WINS set up right. Maybe you don't have it set up at all (no WINS server anywhere at your site), or maybe not all of the machines in question are configured to use the same WINS server.
If this is a home network and the only reason you have separate subnets is because you have machines on both the WAN and LAN side of a box that's doing NAT, then easiest solution might be to disable NAT and DHCP on that box (make it act as just a bridge) so that it's not creating a separate subnet on one side; so that your home network is all one big subnet.