After several hours of effort, I thought I'd contribute my experience. Maybe it will save some other people some time.
Mac OSX 10.7.5
iphone 5, ios 7.0.2
At some point, I don't know when exactly, maybe after installing itunes 11.0, USB tethering stopped working. In an effort to rectify this problem, I went into Network Settings, and deleted the iphone USB network, thinking I would be able to re-add it. No go. It was really just gone, and when I clicked +, I could not add it again.
The main resource I used for this is here:
I used Google Translate to translate the page. Basically, it's a more thorough and persuasive discussion of the problems related to AppleUSBEthernetHost.kext that are discussed elsewhere.
I looked in /var/log/system.log and saw the tell-tale signs that the USB tethering was not going to work:
Com.apple.kextd  Failed to load / System / Library / Extensions / AppleUSBEthernetHost.kext - (libkern / kext) link error.
Com.apple.kextd  Load com.apple.driver.AppleUSBEthernetHost failed; removing personalities.
kernel kxld [com.apple.driver.AppleUSBEthernetHost]:. The super class vtable 'vtable for IOEthernetController' for vtable 'vtable for AppleUSBEthernetHost' is out of date. Make sure your kext has been built against the correct headers.
Kernel Can't load kext com.apple.driver.AppleUSBEthernetHost - link failed.
Kernel Failed to load executable for kext com.apple.driver.AppleUSBEthernetHost.
This was after installing iTunes latest, which was 11.1.1. I examined the version.plist for the AppleUSBEthernetHost.kext and saw 7.0, which seemd right. Maybe it's not built properly for my machine. I don't know.
So I downloaded this: http://carlogent.com/KextUtilityFix.zip It includes the old v2.3.0 AppleUSBEthernetHost.kext , as well as the KextUtil from cVad. I removed the old AppleUSBEthernetHost.kext from /System/Library/Extensions and dropped this one in, using KextUtil. This did not fix the problem. Yet!
I again looked in the system.log file and saw messages about a kernel cache being out of sync with the actual kexts. So I thought - how do I rebuild the kernel cache?
I then ran
sudo kextcache (dang, I forget the exact command) to rebuild the cache from the command line.
At this point I plugged in the iphone via USB, and opened the Network settings. I could + to add the Iphone USB which was missing. But still this connection was not active. It read "Not Connected". Examining the kernel.log file, I could see the kernel was detecting the iphone being plugged in, and unplugged, repeatedly. Then, back in the Network Settings dialog box, I clicked the little "lock" icon that prevents further changes. Voila. the iphone USB became "Connected", and everything began working as expected.