Here's the link to Andrew Connell's blog where he started demonstrating this. Be aware that there are multiple follow up jobs where he detailed some necessary specifics. Such as 'Feature must be set to Hidden="true"', that the feature should be scoped to Site', etc.
http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx