Note: While this whole post is just playing, the idea for the solution comes from an answer to a very real problem I had, so it wasn't just a futile exercise. The key is that (in v8) a shared function (set with SetSharedFunction) is always evaluated on the main kernel. Thanks to Andrew Moylan for pointing this out!
Here's my incredibly wasteful solution that makes you run out of kernel licenses:
In[16]:= CloseKernels[] (* just in case *)
In[17]:= list = RandomInteger[10, 10]
Out[17]= {3, 2, 10, 8, 1, 0, 5, 10, 8, 10}
In[18]:= LaunchKernels@Length[list]
In[19]:= ParallelSow = Sow
SetSharedFunction[ParallelSow]
Out[19]= Sow
In[21]:= Reap@ParallelDo[Pause[i]; ParallelSow[i], {i, list}]
Out[21]= {Null, {{0, 1, 2, 3, 5, 8, 8, 10, 10, 10}}}
In[22]:= CloseKernels[]
EDIT
Another solution, should be v7 compatible. Just evaluate all of it at once.
CloseKernels[];
list = RandomSample@Range[10]
LaunchKernels@Length[list];
jobs = {ParallelSubmit /@ ((Pause[#]; #) &) /@ Hold @@ list} //
ReleaseHold
Reap@NestWhile[Function[j, (Sow[#1]; #3) & @@ WaitNext[j]],
jobs, # =!= {} &]
CloseKernels[];
