There is no need to set those variables to nil at all.
-- drop old weps
self.weplefthand = NewWepToHold1
self.weprighthand = NewWepToHold2
collectgarbage()
If the old objects are not being deleted, you must have the same objects referenced somewhere else. You can call SetHidden() to hide them, if nothing else works.
In Leadwerks, stuff like this could cause invalid pointer errors, which are impossible to detect and cause random memory overwrite. This was the #1 issue I saw causing problems in games made by the community.