We use a custom program. It's Java-based. Nice thing about it is that we get a feed from Amex of all of our corporate card expenses, so there are fewer receipts to submit. On a domestic expense report, I usually only need to submit the hotel receipt (to verify I'm not expensing in-room movies), and the car rental receipt (to verify I'm not expensing NeverLost or similar). Gas, meals, etc that are >$25 don't need a receipt as long as they're on the corporate card.
Once I finish a report, it prints a barcoded submittal page that I shove in an envelope with the required receipts and send interoffice to our expense processing group. I usually have funds in my account/credit card within 48 hours of submittal.