What are the differences between "agree on", "agree with" and "agree to"?
The object is the difference.
When two or more people agree on something, it means they have the same opinion about something being discussed. To agree with someone is to share a point of view with him/her, and to agree with an idea or proposal is to accept it and to believe that it's valid. Example use that includes both prepositions: "He agreed with you on whether we should or shouldn't increase the salary."
You use "agree to" to imply that a request was made and that the person towards whom the request was directed responded positively to that request -- i.e., he/she agreed to do whatever the requester was asking him to do. Example: "She agreed to be my prom date." (There are other, more slang and common phrasings to talk about proms, though.)
A quote from "A valency dictionary of English" (Herbst et al. 2004: 25), with some modifications:
A. Agree can mean 'be of the same opinion'
(i) People can agree on or about a particular topic or issue.
(ii) A person can agree with another person on or about a particular topic or issue.
(iii) A person can agree that something is the case.
B. Agree can mean 'consent'.
(i) A person or organisation can agree to or with something suggested.
(ii) A person or organisation can agree to do something suggested.
C. If two statements or versions of something agree, they are the same; if figures or calculations agree, they show the same result. Grammatical categories also agree, i.e. correspond in number etc.
D. Agree can mean 'come to a common conclusion'.
(i) People can agree some course of action, i.e. decide upon it.
(ii) People can agree on something as the result of a discussion.
(iii) People can agree to do something.
E. If something such as food or the climate does not agree with a person, it causes them problems.