It is hard to tell from your description. There are a lot of things it could be. I would check the timing/timing belt. I would also, with the engine off, look at EVERYTHING under the hood looking for something that might be loose or vibrating. Also think about when it was last tuned up. I know that you said that it was runng good, but that can be subjective. For instance an old/bad plug can idle fine but miss under load. Give everything a good going over and let us know what you find.