I don't enter in the details of how to install a timer job. It you are interested, take a look here http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx .
After doing the coding, during the testing, I had 2 issues:
During feature activation I had: 'System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object 'proc_putObject', database 'Intranet_Config', schema 'dbo''. After doing a profiling on the database, I saw that the SPJobDefinition.Update() code is executed with the web application's application pool account. This account has to have access to the configuration database. I did this by setting the necessary rights in SQL Management Studio by giving to the web application's application pool account EXECUTE permissions on the proc_putClass, proc_putObject, proc_getNewObjects and proc_dropObject stored procedures.
After doing the thing above, the SPJobDefinition.Delete code throws a weird exception: Access to the path 'C:\Documents and Settings\All Users\Application Data\Microsoft\SharePoint\Config\360c4621-fccb-4c2a-9182-b3c75ae80cf3\cache.ini' is denied. Solution: give full control to the WSS_WPG user on the folder where the cache.ini file is searched.
This happened on a development machine, simple farm installation on a single machine. Hope this helps.