A couple more ways of thinking about it. (There are connections with some of the answers above.)

1. The graph of the function has to have the property that it intersects every horizontal line segment of positive length in the plane. Well-order these line segments such that each one has fewer predecessors than the cardinality of the reals, and then stick a point in them one at a time. At each stage, one has put fewer points into the graph than there are points in a line segment, so there will be points in the segment that are not vertically above or below points that are already chosen. When you've covered all the line segments, choose the remainder of the function arbitrarily.

2. Enumerate all open intervals with rational end points. Now inductively create a graph as follows. Pick the first interval, and take a copy of the Cantor set inside it. Biject that copy of the Cantor set to the reals. Pick the second interval and find inside it an open interval disjoint from the Cantor set chosen earlier. Inside that, take a copy of the Cantor set and biject it to the reals. Keep going. The complement of the set where you've defined the function so far is always open and dense, so you can always continue.