I don't see any problems in your UpgradeModule code nor in your .dnn manifest. It appears that the installer is not recognizing that the IUpgradable interface has been implemented in the controller class so your code never gets called. If it did you should see the result string being returned by UpgradeModule as the install runs and see that an event with ProcessCommand of UpgradeModule created in the EventQueue table. Here are a few more questions to help track down the problem:
1. When you are testing the install (on a test site - not your development site), are you first deleting any module definition from a previous install? Otherwise, the installer would see this as an upgrade to the same version and not create add the UpgradeModule even to the EvenQueue.
2. Have you verified that the full name of the business controller class is that shown in the manifest. Since this is a WAP (compiled) module. Check in your project's properties that the Root Namespace is blank. If it is not the actual name of the business controller class will also have to include the Root Namespace.
3. You mentioned that following an install the checkboxes in the Module Definition for the various supported features are disabled. That would be normal as these are automatically set. Am I correct that Upgradable is not checked? Have you implemented ISearchable or IPortable? If so, did either of the Searchable or Portable checkboxes for Supported Features get checked?
4. Have you checked the Event Viewer to see if any errors relating to the install or operation of the module are shown?
Hope one of these questions provides the answer - otherwise I'm stumped for now.