I don't know how many times you have to do something before you decide that enough is enough. I wrote a service to autorecompile kernel modules. It checks in a config file (/etc/modautocompile.conf) which modules to autorecompile and if they are not found in the /lib/modules directory of the current kernel runs the command associated with the module to recompile it. I bet such a service already exists hundred times under different names ... but it's going to save me time and probably explanations (as the ATI fglrx module should be the first of your list!)
Here's a sample config file (adding modules to that list and comment them out would be a good idea).

# kernel modules to autocompile after kernel update
# name              command
vboxdrv             service vboxdrv setup
fglrx               /usr/bin/fglrx-kernel-build.sh
And here's the script: