It looks like you didn't change the DELIMITER
Use of multiple statements requires that a client is able to send statement strings containing the ; statement delimiter. In the mysql command-line client, this is handled with the delimiter command. Changing the ; end-of-statement delimiter (for example, to //) permit ; to be used in a program body.
Within MySql client you should define your procedure like this
DELIMITER $$
CREATE PROCEDURE archive_acct()
BEGIN
INSERT INTO radacctold
SELECT *
FROM radacct
WHERE acctstoptime > 0
AND DATE(acctstarttime) < CURDATE() - INTERVAL 3 MONTH;
DELETE
FROM radacct
WHERE acctstoptime > 0
AND DATE(acctstarttime) < CURDATE() - INTERVAL 3 MONTH;
END$$
DELIMITER ;
Other than that your procedure compiles without other syntax errors.
Here is SQLFiddle demo