Having partitioned your set, finding the greatest element of the "left" half is O(N/2), and finding the least element of the "right" half is also O(N/2).
Repeat until you have all the elements you want. Complexity is O(k*N), which for constant k is O(N). Actually, you can select and order the k/2 greatest elements a bit more efficiently than selecting the greatest element k/2 times, but it's the same complexity as far as N is concerned.
Edit2: Much questioning whether k is constant, or might be any value less than N. OK, if you want to select (without sorting) the k/2 least elements greater than the median: do another quickselect on the right hand side of the partition, this time not partitioning on the median, but instead on the (k/2)th element. Then do the same on the lhs, for the (N/2 - k/2)th element. But actually, if you were going to do this then you never should have selected the median in the first place: you should have first partitioned the original array on the (N/2 + k/2)th element, then partitioned again on the (N/2 - k/2)th element of the left side of that partition. If you want to select and sort k elements around the median in O(N) comparisons, and k can be anything up to N, then obviously that's impossible, because if it was possible then you could sort the whole array in less than O(N log N).
Edit: I may have misinterpreted "nearest neighbours". Do you want the k elements closest to the median by value (i.e. using subtraction), or the k elements closest to the median by sorted position? I've given you the latter, but you can get the former in the same O(N) by for example grabbing and sorting k elements on each side of the median (2*k total) as already described. Then start at the "outsides" and work inwards from both directions, discarding k elements by excluding whichever of the two candidates is furthest from the median by value.
I can't immediately think of a way of doing this nearest-by-value selection in O(N) (without sorting) in the case where k could be anything up to N.