Sort List By Boolean
I think my original comment in regards to using OrderBy could still possibly still even with your latest edits (and BTW that code does not compile, there is no declared task object :)).

How about something like:

var query = from task in tasks
            let helperTask = task.getHelperObject()
            select new
            {
               Completed = helperTask != null &amp;&amp; helperTask.Completed,
               Task = task
            };

return query.OrderBy(p =&gt; p.Completed).Select(p =&gt; p.Task).ToList();


UPDATE:
Another excellent option suggested by svick to further refine and remove the anonymous object selection is something along the lines of:

var query = from task in tasks
            let helperTask = task.getHelperObject()
            orderby helperTask != null &amp;&amp; helperTask.Completed
            select task;

return query.ToList();


I guess if I could I would do away with ToList() altogether and return IEnumerable but that depends on the context of the operation.  I also personally like using an intermediate variable here (query) as I think it just helps readability.  All to their own on that front though.