Tricky Median Question
I can imagine a scheme better than O(n^2), at least in the common case.

Build a quadtree out of your input points.  For each node in the tree, compute the number and average position of the points within that node.  Then for each point, you can use the quadtree to compute its distance to all other points in less than O(n) time.  If you're computing the distance from a point p to a distant quadtree node v, and v doesn't overlap the 45 degree diagonals from p, then the total distance from p to all the points in v is easy to compute (for v which are more horizontally than vertically separated from p, it is just v.num_points * |p.x - v.average.x|, and similarly using y coordinates if v is predominately vertically seperated).  If v overlaps one of the 45 degree diagonals, recurse on its components.

That should beat O(n^2), at least when you can find a balanced quadtree to represent your points.