I've been knocking out some epic swim sessions this week, doing 2600 meters of butterfly without stopping. I'm no butterfly phenom, so I thought I should share how I learned to do it for those of you that might want to try it.
First, I got used to swimming freestyle non-stop for 1 hour. I just pace myself and take two extremely short breaks at 20 and 40 minutes just to gulp a mouthful of gatorade and then keep going. If you don't refuel, then you aren't getting in the great workout that you should be. Running on fumes leads to bad form, bad attitude, and bad results. If you're going to be working out for an hour, don't waste your time by doing it half-assed. Yes, you don't get to stop during a swim race and drink, but you've also tapered, carb loaded, and have a ton of fuel in your belly. It's not the same thing, so we can all get over it already.
Once you learn the pacing to go for an hour on a regular basis, it gets pretty easy. Next, start your swim sessions with some 100s of fly on an interval instead. Swim 100 yards of it at a casual, very slow pace, and then add 30 seconds - That's your interval.
At the beginning of every swim practice, start by doing fly at the casual pace on that interval. Once you get up to being able to doing 10 in a row, you'll start being able to shrink the interval down. Shrink the interval some, and then try to do more than 10. 11, maybe 12?
After a few weeks of this, you will get the coordination down of how to swim fly at a sustainable pace (very slow!) and doing 200s instead of 100s. And doing 20 intervals instead of 10! Eventually, the whole stroke finally "clicks" and you find you can swim nonstop, just like freestyle.
It took me a couple of months, but I went from nearly dying when swimming 25+ yards of fly to being able to go 1.65 miles of it in an hour. The difficulty is easily outweighed by the feeling of accomplishment, so give it a fly try!