1. Make sure the ability being upgraded does infact have multiple levels to upgrade through.
2. Make sure the ability truely has not been upgraded (registeres at level 1) as otherwise it could be incorrectly filled tooltip fields.
3. If this upgrade system uses triggers, debugg the triggers to make sure they are not the cause.
4. Make sure the researching building is owned by the unit owner. Upgrades affect only the owner.
5. Make sure you are not trying to decriment the upgrade level, as WC3 does not support this (SC2 does though).
6. Make sure you have actually made an effect in the upgrade object data to increase the level of the ability by 1.
7. Upgrades are not retrospective by default if I recall correctly. You need to make sure the unit object data is set to register upgrades from the upgrade object data so that once the upgrade is researched it actually applies it to existing units of the affected unit type.
8. If the map is not yours, make sure that you are upgrading the right ability. You may be upgrading a dummy ability with the actual usable ability being different.
For hero skills...
1. Make sure the ability you are trying to upgrade is actually a hero ability.
2. Make sure the ability has more than 1 level.
3. Make sure the ability tooltip fields are filled in correctly.
4. Make sure the ability is a learnable hero ability.
5. If you are using the goblin tinker's engineering skill ability you need to make sure everything is set up correctly (check the real hero for how it works).
6. Make sure no triggers are interfearing with hero skill level.
7. Trigger added skills can never be learnable.
What do you mean by "upgrading" an ability? Level it up? If so, how do you level it up? Did you use the triggered action:
"Unit - Increase level of Ability for Unit"?
WC3 supports researchable upgrades. I think he is refering to making a researchable upgrade (some call them technologies) that increases the skill level of an ability. There is a field in the object editor to do this so no triggers are required (for most simple cases). I am guessing he has forgotton to assign the upgrade to the actual unit so that it knows which units to apply it retrospectivly (as currently only future made units would have the upgrade).