Time domain interpolation using FFT with zero padding on the end
It's important to remember that, for an even N, you have both F(0) and F(N/2) points, neither of which has a counterpart.  So, for instance, with N = 8, you have:

F(0),  F(1),  F(2),  F(3),  F(4),  F(-3),  F(-2),  F(-1)

(some people consider the N/2 point as a negative frequency ( ie: F(-4) ), but we'll consider it to be positive)

So to interpolate an 8 point FFT by a factor of 2, you'd do a 16 point inverse FFT using:

F(0),  F(1),  F(2),  F(3),  F(4)/2,  0,  0,  0,  0,  0,  0,  0,  F(4)/2,  F(-3),  F(-2),  F(-1)

So you split the N/2 point of your forward FFT, and add the appropriate number of zeroes in the center, and do the inverse.

Now, for an odd number N, you DON'T have an N/2 point (but you still have a unique 0 point), and the splitting business doesn't happen (but you still have to add the appropriate zeroes in the center).

I suggest you experiment with the FFT/IFFT method by using: a real input time domain waveform; a complex input time domain waveform; even and odd N; an integer number of cycles in the input; a non-integer number of cycles in the input.  Then compare/contrast your results from the FFT/IFFT method with to those generated by a strictly time domain based interpolation (eg: use A*cos(omega*t) for the FFT/IFFT method and compare to A*cos(omega*t/2) generated in the time domain).  Experience can be enlightening.

As for your multiplying method – I don't think it will work for an even N.  And the FFT/IFFT timing, unless you're using very small FFT's, will probably dominate the total run time (of, course, you should always profile your programs to make sure).