...Which is actually quite simple. Here's my function for doing that that I wrote just now:
(defun duplicate-line
(interactive)
(kill-whole-line)
(yank)
(yank))
Five lines, and it took me all of ten minutes to write, including looking up the names of all the functions. Of course, there's probably a better way to do this, but I don't know what it is. Now all you have to do is bind it to a key.
Or, of course, you could just record a keyboard macro to do it instead.