How can I make wireless transfers faster on a Linksys WRT54G running DD-WRT?

First make sure that the Linksys AP and the D-Link AP are on separate, non-overlapping channels. When using typical 20MHz channel widths, channels 1, 6, and 11 don't overlap with each other. Manually set one AP to, say, channel 1, and the other to channel 11 (don't let them auto-pick or they may choose poorly on the next reboot).

If it's true that you had a D-Link DI-624, note that it did a nonstandard/proprietary 108mbps mode which probably used two contiguous channels' worth of bandwidth (i.e. 40MHz instead of the usual channel width of 20MHz). I don't know if it centered that 40MHz channel on the center frequency of the channel it was on, or if it used the next channel up, or the next channel down. But if you're not using any other D-Link 108 mbps gear from the same era, just turn off the proprietary 108 mbps mode of the D-Link (make it be a plain B/G 54mbps device) so that it only uses one 20MHz channel.

Make sure the two APs are not physically too close to each other. Even if they are on non-overlapping channels, if they are too close to each other, the transmissions from one can overload the notch filter on the other, desensitizing the other's receiver. (Think about how hard it is to hear people across the room while someone is shouting directly into your ear.) I recommend you keep APs at least 1 meter apart, although 2-3 meters might be even better.

After making the changes above, run a clean performance test using a tool such as IPerf, between a wireless client and a machine wired into the LAN port of the AP. Then repeat on the other AP. If you're still seeing problems, update your Question with the IPerf output from each case. (NB: Don't use some random file copy protocol on your local network, because those are often inefficient and muddle the measurement. Similarly, don't muddle the measurement by bringing your broadband connection into this, so don't use speedtest.net and don't time some download from the Internet.)

Seeing those well-quantified performance numbers would be a big help here. Note that under real-world conditions, 15 mbps is a respectable speed for TCP traffic over 802.11g, and most people never see above 25 mbps even under ideal conditions. See also: What's the maximum actual bit rate of an 802.11g connection?

Another thought that occurred to me as I was writing this is that if you had the Linksys and the D-Link in the same location because you preferred the Linksys's home gateway functions and the D-Link's wireless functions, why not just turn off the wireless interface of the Linksys? Let the Linksys just be your home gateway (NAT router, DHCP Server), and let the D-Link be just a simple bridging Wi-Fi AP.

Update: Okay, so rebooting the Linksys makes it work better, and you get respectable real-world 17-21 mbps IPerf TCP throughput for a few minutes, then it degrades again. That makes me suspect a memory leak or other resource problem in DD-WRT. Try going to the latest actual Linksys firmware for that revision of the WRT54G, and see if it does better. If it does, then try out the latest "stable" release of DD-WRT (if you weren't already up to date on a stable release line) with simple settings. Or maybe OpenWrt or Tomato or whatever else you want to try.