And I might add that dumping the hashes are not very hard (though some virus scanners do a decent job at blocking some of the more popular methods to do this, but again, if the user's an admin then a virus scanner won't be very effective)... most user accounts have admin access, so you should assume they can get at everyone's hash who has logged on to the local environment.
Yep, a lot of systems, especially older OS's you can simply plug in a USB key with autorun enabled and without touching the input device autorun an app that pulls the keys from memory/disk, newer OS's are better at stopping this and anti-virus can help as well. Remember though anti-virus largely work off definitions, so custom written apps may not be caught.
HOWEVER if your adversary has physical access then it's more or less game over, they can simply plug in a USB, floppy or CD which has boot sector, boot off a custom OS and run their own apps to read the disk and dump the hashes which is nice and passive.
Some tools do the opposite, they can write values back into the SAM database on the disk, of hashes for known passwords. Once you've done that you've essentially forced the password on the box to be whatever you want. Using this method you can reset the local admin password on that box (including re-enabling any disabled local admin accounts) and once you're admin and can boot into the OS you can disable anti-virus and grab the hashes.
Or at the very, very least you can pop the case and yank the drive and take it with you, or whatever, clone/mirror it, replace it.
Also for any admins out there, it's worth noting that the PCs local SAM database by default holds hashes for all users even ones on the domain, if a domain controller is active and can be reached then auth attempts are always pinged there and checked, but if that's offline (for example someone takes their corporate laptop home with them) then windows queries the local SAM database.
The upshot of this is that all users who have ever logged into that machine will have NTLM hashes stored on the machine, and you've almost certainly used admin creds on the box at some point, if nothing else just to join the domain in the first place.
Tips for sys-ads, I believe you can force disable local creds caching and rely solely on the domain controller, you can also force-disable LM hashes across a network using group policy, both worth doing. Min password requirements should be a min of 9 characters, that will stop most brute force attacks including rainbow tables. I believe switching to Kerberos auth is good practice to help increase security. Exercise caution as some of these changes have potential drawbacks for compatibility and usability.