package forget ?package package ...?
Removes all information about each specified package from this interpreter, including information provided by both package ifneeded and package provide.
See also:
RS 2004-02-05: package forget does not remove resources that a package has brought with it. I'm not sure whether it unloads a DLL, but I could verify that it does not remove namespaces created by a package. Now if a package is well-behaved (i.e. creates a single namespace named like itself, in which all variables, commands, and possible child namespaces go), the cleanup could be done with
namespace delete ::pkgName