ricky, if you apply an “edge split” modifier to the object, then set smooth it may help. look at this:
first pic cylinder with boolean cut hole
2nd pic same with edge split, set smooth, quick render
3rd pic same without edge split…crappy
then if you add some more edge loops like richards says (but before the boolean). and also maybe select the edge loop where the hole cuts through the surface and apply bevel (W menu). Even better results:
4th pic with extra edge loops, bevel and edge split
5th pic not bad
i get the whole thing about booleans are bad, but for a quick solution they have my vote!