All of the comments I'm reading are making the assumption you've actually tried getting the ISP to send an engineer out first.
They're assuming the ISP is maliciously shorting you on service and talking about calling lawyers, BBB, FCC, cancelling service, etc. Yet it's worth making sure you actually have called the ISP and had them send an engineer out.
My cable internet from Cox was similarly terrible. I'd convinced myself they were spreading their connection too thin amongst too many houses, that they knew they were giving me a fraction of the bandwidth their ads promised "up to." I looked for FIOS but it hadn't rolled out to my area, I hated Uverse previously. Not being able to find a decent alternative, I decided to deal with the inevitable stupidity of the dreaded tech support call. I knew I was going to waste an hour being told to turn everything off and back on, that I would be talking to a guy in India... and that was after it took me half an hour to find an actual customer service as opposed to sales number.
The call was predictably painful but, after a few tests, they sent someone out... And the guy was utterly amazing.
He got to the appointment a little early, while I was still heading home. I found him at the top of the phone pole outside the house already re-running cable. He had checked it, it was noisy, so decided to re-run the line in to my house. The house had been used as a nursing home at some point so there were splitters to every room. He pulled all of those out with a clean run to where I actually wanted the line to come in. He tacked the cable up neatly, he disposed of the old garbage.
Inside, he rewired the plug where it came through the wall then showed me how to hit up my cable modem at http://192.168.100.1/. Recognizing I work with the net and was curious, he then explained the signal to noise ratios, the power levels, the frequency spread. He explained what the previous values were, what I should be looking for in general, in best cases and showed me how what I was getting now was within it. He then asked me to pull up the speed test of my choice and we confirmed I was getting everything I was promised, not just an "up to" fictional value.
I had lousy cabling left over from half a centurty of abuse to an older house. I wasn't being ripped off by the cable company, I just had such a stupid amount of noise very little signal made it through and even less when others jumped on in the evenings and added to the noise.
Yet I'm a coder. I know the web pretty well. I knew tech support would be a terrible waste of time so I didn't call them for months, getting angrier and angrier at the perceived terrible service.
The moral of all of this is: Before you assume malice, incompetence, cheapness, etc., give them a chance to send a tech. You may find the answer's much simpler and doesn't require going to war.
And, yes, I totally recognize I got a tech in a million. I made a point of calling Cox to make damn sure his bosses heard my praise. But the core's still there - it's not always as nefarious as we like to assume.