How can I create a two-way transfer system in OpenTTD without creating two stations
In OpenTTD, a feeder service can be created, as per the wiki, using the transfer option when giving orders. As the note at the top of the page notes, this won't work two ways, since the vehicle will simply pick up the same cargo again, resulting in the cargo moving in circles.
The normal workaround, again as per the wiki, is to use two stations next to each other:
This is, however, highly unsatisfactory in my situation, because I need to create a two way transfer system between a bank and a airport, and there's just no way I would build two airports just for this purpose.
Is there another method of accomplishing this?
I believe the straight forward answer is "no"; as you've discovered the load/unload orders you can give to vehicles currently do not allow you to make them ignore the cargo they have dropped off.
However, as a work-around, have you considered a single combined station instead of a feeder service?
Assuming the bank is close enough to the airport (dependent on your settings, more below), you can Ctrl+Click
when placing a loading bay (or equivalent) near the bank, and select an existing near-by station (i.e., your airport) to have the new construction form exactly the same station. Then they share waiting all cargo, ratings, etc - so there is then no need of a feeder service.
The maximum spread of a station is an advanced setting that you can change, and defaults to 12. I'm fairly sure it can be adjusted mid-game, if necessary.
As an alternative to using the single combined station approach, there are always patches to the rescue; you can use cargodist.
It requires a specially built executable and all that, meaning you will probably as you update it end up going back and forth between ahead of stable release and behind it, but in my experience it makes the game a fair bit more interesting and realistic.
Edit: As of 1.4.0; cargo distribution is part of the main branch of OpenTTD.
I'll offer two approaches to bidirectional feeder service with a single intermediate station. For clarity, let's say that there are three towns, A, B, C, each with a single logical station (which may be, say, a bus station joined to a train station or dock). The lines connecting these are A-B, B-C. We'll assume the cargo is pax.
(1) Advanced Settings > Stations > Use improved loading algorithm > ON and let, for both lines, the order at intermediate station B read Transfer and wait for full load.
If there is sufficient capacity on each line and your timing is good, there will be an A-B vehicle waiting at B when a B-C vehicle transfers, which is to say cargo unloads but will not be accepted at B. The A-B will pick up the pax dropped by the B-C so the latter in its turn must wait for the next A-B. If there were no waiting A-B then, yes, the B-C will pick up the pax it just dropped.
This is tricky and requires a lot of fussbudgetry. Town B must supply some pax to both lines since there will be some loss: a full load B-C won't quite make by itself a full load A-B. So B can't be in a cornfield. If there are several vehicles on each line and a B-C is waiting when another B-C arrives then again, those pax will go right back where they boarded. You might timetable both lines although this will interact poorly with 'full load'.
(2) Play with the cargodist patch. This is slightly buggy and has some limitations, which is why it's not in trunk. (For instance, conditional orders don't work.) Now you can arbitrarily run A-B, B-C with pretty much any orders and frequency. The station GUI will show not merely pax waiting but pax waiting with a desired destination. They will not go back but will wait for the next vehicle going the right way. This works well... when it works. I find the good outweighs the bad.
The cargodist patch is no longer maintained by its original author but it's part of chillpack, which contains many neat patches. See: forum thread. As of now, the "LATEST" revision to chillpack was made 2011 Nov 18: Download. The most recent revision is shown as 2012 Jan 25, just two days ago.