If the arguments are sequential there is a function Developer`PartitionMap that does this directly, potentially saving considerable memory over Partition.

Developer`PartitionMap[f @@ # &, Range@5, 2, 1]

{f[1, 2], f[2, 3], f[3, 4], f[4, 5]}

Syntax is the same as for Partition but with the function to map inserted as the first argument. Notice in my use above that I needed Apply (short form @@) to pass the elements as arguments rather than a single list.

Probably too specific since the OP was asking "generally" but if you expand this answer to address Listable functions and discuss the performance benefits you'll heartily earn my +1.
–
Mr.Wizard♦Apr 9 '12 at 15:03

@Mr.Wizard I like this one, and it's the type of thing I often use as I didn't know about Developer`Partition until very recently.
–
rcollyerApr 9 '12 at 15:11

@rcollyer I like this one a lot too (hence: "heartily") but the answer is unfinished. Thread as shown is dangerous because of evaluation order, and the most elegant an efficient possibility (with Listable functions) is neither shown nor explained.
–
Mr.Wizard♦Apr 9 '12 at 15:13

@Mr.Wizard How is Thread dangerous? I don't see it. I also, don't see the answer as being incomplete. Instead, I see it as not being generalizable, e.g. what if the OP wanted to expand it to sequential, overlapping triples, instead?
–
rcollyerApr 9 '12 at 15:20

Mathematica is a registered trademark of Wolfram Research, Inc. While the mark is used herein with the limited permission of Wolfram Research, Stack Exchange and this site disclaim all affiliation therewith.