If they are just temporary packages, it is often easier to load them from the current directory, but otherwise moving the files to anywhere on $Path
(such as $UserBaseDirectory/Applications
as suggested by rcollyer) will work although some directories are autoloaded.
My usual solution is to have
SetDirectory[NotebookDirectory[]]
as more or less the first line in all notebooks. I can then load packages from the notebook directory with Needs["foo
"]`. For versioning, you can use the more verbose form of needs:
Needs["foo`","foo-001.m"]