I'll try to summarize the main differences as I see them.
"Complete" is used when all parts of a task have been fulfilled, whereas "finish" is less all-encompassing, and might just indicate that you have reached the end of something, rather than fulfilling all individual aspects of it. They can often be used in the same place, but "complete" gives a stronger sense of accomplishment.
Speaking of which, "accomplish" is a little different from the previous two words, which are near synonyms. To accomplish something is basically to succeed, but a little more specific. You can succeed in life, but you can't accomplish in life. You can, however, accomplish an individual task.
I'm sure others will contribute in more detail but hopefully this makes things a little clearer!