Force_needed=(rho/2.0)*C_d*Area*(v_try+v_wind)^2+Math.sin((tan^-1)(grade/100.0))*m*g+C_r*m*g
Force_wheel = torque/radius; Since Force_needed=Force_wheel where v stabilizes, you'd solve for
torque = radius*[(rho/2.0)*C_d*Area*(v_try+v_wind)^2+Math.sin((tan^-1)(grade/100.0))*m*g+C_r*m*g]
Enjoy! Remember, all of these are in standard SI units(meters, NM, m/s, kg, m/s^2, etc.) EXCEPT for the grade. That's just a simple "tangent definition"(distance-forward divided by the distance going up) in percentage.
C_r is the coefficient of rolling friction(Since you're on gravel, it's going to be higher than .01 that's usually assumed for rubber on pavement) and C_d is the drag coefficient(usually around .9), and rho is the air density(assume around 1.2 for convenience). Also, this equation assumes that wind resistance is a headwind. If it were a tail wind, you'd have to calculate it differently where v_try<v_wind(stick a negative on the first additive term). Also, v_try is the velocity the bike is going. g is the gravitational constant(assume 9.8 m/s^2, and Area is the frontal area(assume around .6), and radius is the bicycle's wheel radius(1/2 the diameter).