<p>Say I have a line in an emacs buffer that looks like this:</p>

<pre><code>foo -option1 value1 -option2 value2 -option3 value3 \
    -option4 value4 ...
</code></pre>

<p>I want it to look like this:</p>

<pre><code>foo -option1 value1 \
    -option2 value2 \
    -option3 value3 \
    -option4 value4 \
    ...
</code></pre>

<p>I want each option/value pair on a separate line. I also want those subsequent lines indented appropriately according to mode rather than to add a fixed amount of whitespace. I would prefer that the code work on the current block, stopping at the first non-blank line or line that does not contain an option/value pair though I could settle for it working on a selected region. </p>

<p>Anybody know of an elisp function to do this? </p>

In this case I would use a macro.  You can start recording a macro with C-x (, and stop recording it with C-x ).  When you want to replay the macro type C-x e.
In this case, I would type, C-a C-x ( C-s v a l u e C-f C-f \ RET SPC SPC SPC SPC C-x )
That would record a macro that searches for "value", moves forward 2, inserts a slash and newline, and finally spaces the new line over to line up.  Then you could repeat this macro a few times.
EDIT: I just realized, your literal text may not be as easy to search as "value1".  You could also search for spaces and cycle through the hits.  For example, hitting, C-s a few times after the first match to skip over some of the matches.
Note: Since your example is "ad-hoc" this solution will be too.  Often you use macros when you need an ad-hoc solution.  One way to make the macro apply more consistently is to put the original statement all on one line (can also be done by a macro or manually).
EDIT: Thanks for the comment about ( versus C-(, you were right my mistake!