DVDdoug:
Right! PWM is pulses which contain multiple frequencies. And, they are "nasty" 5V peak-to-peak pulses. I wouldn't run unfiltered PWM into an amplifier that I cared about. 
Your ear and the speaker are essentially high pass (actually bandpass) filters so you may have to filter more than you think...
And, it's probably easy to overdrive the speaker or built-in amplifier to the point where you get audible distortion harmonics. Unless you have a "big" subwoofer (or multiple subs) I'd guess you'll hear distortion components before you "feel" the subsonic bass. ...You can also feel bass that's not subsonic. Most "pro" subwoofers used for live music or in dance clubs go down to about 40Hz.
You can generate square waves with delay() or delayMiocroseconds(). That should be easier to filter than PWM but you can't control the "volume" digitally. And, I'm not scared of running low-frequency (volume controlled) square waves into my amplifier.* ...The tone() function generates square waves but it doesn't go below 31Hz.
If you can use a computer I'd try your soundcard, although not all soundcards go subsonic. Audacity can generate sine wave files (down to 1Hz with 1Hz resolution**) or you can probably find a tone generator application for your computer or phone (but "audio" generators that go subsonic might be harder to find.)
You might also consider adding a DAC, or using an audio shield. Audio shields play audio files (WAV or MP3) so you'd need one file for each frequency. And, you could again run into subsonic limitations.
A DAC normally needs low-pass filter too but if the sample rate is high enough you can get-away without one. I was doing some experiments with an oscilloscope and a cheap soundcard once and I was very surprised to see a stair-stepped waveform! I never heard anything "wrong" and after thinking about it, the harmonics are ultrasonic and mechanically filtered by the speaker (and maybe filtered by the amplifier too).
- Not a problem with your subwoofer but constant high-frequency tones can kill a tweeter. The tweeter in a "100W" speaker can't handle 100W and you can burn-out a tweeter with supersonic tones/harmonics that you can't hear.
** I was able to "tweak" the frequency and easily go down to 0.1Hz with Audacity's Change Speed effect. (I didn't try playing the files through my soundcard.)
P.S.
Are you sure the amplifier in your subwoofer goes down to 2.5Hz? Most amplifiers have a "DC blocking" capacitor on the input (because DC an also burn-out a speaker or amp without making sound) and that capacitor acts as a high-pass filter.
You can also burn-out a 100W woofer with a 100W amplifier. A 100W speaker is supposed to handle 100W program peaks, not continuous 100W test tones. Be careful!
It appears that I should not be connecting that circuit to my powered sub any more.
Hopefully I didn't do any damage! The 'howl' hurt my ears and scared the crap out of me. I don't expect that the signal was connected for more than 10 seconds.
After checking online (my old energy powered subwoofer did not appear on my 'online manuals' search ... but I didn't try that hard) ... I found a couple of older forums that discuss it. And, of course, you are correct. The frequency response starts at 40 Hz, or maybe a bit lower. The discussion was not on my exact model but it was close (a bit newer I think) ... which is much too high for the experiments.
So I guess I DO need an amplifier circuit to get down to that frequency range. AND a powered sub is not the solution, so what exactly can I 'drive' to output these frequencies? It doesn't sound like an audio coil is a great match. I'm not sure what forums I should be looking for ... sub-sonic maybe?
@Grumpy_Mike - ripple on the high-order filters is ripple across the frequency response - right? If you are sending a tone, a single frequency, it should not matter .. or not matter much?
I think I understand now a bit about why this is a project, and not a buy-it-off-the-shelf thing. ...