I agree with using hand tools.
If you really want to get a precise shape, there is a mathematical way to do it. I start out by squaring the handle scales with the tang. Then I trace my top view profile on the handle and remove material down to the line, keeping the surface I'm creating perpendicular to the top. At this point the handle will have contours when viewed from the top and side, but each cross section will be rectangular.
Now suppose you want the handle to have circular or elliptical cross sections. In geometry if you took a rectangle and then drew an ellipse inside of it so that the ellipse just touched the midpoints on each side of the rectangle, you call that inscribing the ellipse. What you will actually do is create an octogon such that the ellipse is also inscribed within that. That sounds complicated, but really you are just going to create bevels on the corners. The math is to let you figure the width and angle of the bevel so that it exactly matches the shape (circle or ellipse), and create lines to file to.
Basically, you pick several points along the length of the handle, and measure the width and height. Make sure you pick the narrowest and widest points, and at least one point in between these. I draw horizontal lines (perpendicular to the length of the blade) across the top and sides of the handle at each point, creating a grid. Now for the height (from the side view) take the first measurement and divide it by (2+SQRT(2)). If the height was 1 inch, the result would be ~0.29". That's how far down the side of the scale from each corner the bevel needs to come. I use the depth guage on dial calipers and make a mark 0.29" from each corner, on the grid line for the first measurement.
You would do the same for the width (from the top view), but on a full tang the shape here is not going to be a perfect ellipse or circle. It will be a circle/ellipse "interrupted" by a rectangular section (the tang and liners). You need to subtract the thickness of the tang + liners from the width measurement you took earlier. So if the width at the first measurement was 0.75", and the tang with liners was 0.1875", then you need to do the calculation for an ellipse with a width of 0.5625", which when divided by (2+SQRT(2)) gives you 0.2197". So on the top and bottom of the handle make a mark .22" from each corner, along the gridline for the first measurement.
You repeat this process for the rest of the measurements and end up with a series of marks on each of the gridlines. Now trace a nice arc that connects all of the marks near each corner. These lines will be the tops and bottoms of the bevels you need to file. If you look at one corner, at the first measurement the line on the side should be .29" down from the corner, and the line on the top/bottom should be .22" away from the corner. If you file away everything between those two lines it create one face of the octogon. The width of the bevel will change as the height and width of the handle dimensions change along the length of the handle. Once you file down all 4 bevels you will have octagonal cross sections everywhere.
Now, you can take this further and create a 16-sided polygon by repeating the process, and you would have to make new measurements for the new faces on the octogon, and make 8 sets of marks at each gridline. This time you need to divide the measurments by 3.848...
While the more bevels you create the more accurate your shape can be, it's really not worth it to take it this far with the math. Just take down the shoulders of the octogon at an angle that roughly bisects the angles of the two faces that form the edge. Take it down until the bevel you're creating is about half the width of the two faces that formed the edge. At this point it should be easily rounded with sandpaper.
I'm not saying it's necessary to do it this way. I'm not sure if I'll do it again. I've done two knife handles like this and I thought they turned out well. One of the first handles I did totally by eye and it looks good, but if you hold it at certain angles you can tell it's slightly off kilter. The math is a way of minimizing mistakes like that, at the expense of time and tedium.