You can use
System.Diagnostics.Debugger.Launch();
to attach a debugger (Visual Studio) instead of attaching the timer job in VS.
Also i tend to use DebugView alot to just write out asserts or messages like
System.Diagnostics.WriteLine("sometext","MYCATEGORY");
Another tip for testing is to encapsulate the logic in its own class. Then you can test (and unit test) the code first in for example a console application. Then you wont have to wait for timer job to execute etc.
hth
Anders Rask
Helpful references
Creating, Deploying and Debugging Custom Timer Jobs