Hello,
I'm one of those freelancers here who actually read project description... I rarely suggest hardware upgrades to my clients, and I never do it before optimization process.
I'm former MySQL database administrator and I specialize in database and website performance optimization. I've worked and successfully optimized databases as large as 100GB. I'm confident I will be able to help You.
Here's how I work. In first phase I check low level server performance, I try to locate which system components slow down the server. In case of databases it's often I/O, sometimes CPU. I then try to tune MySQL configuration for best performance under Your load. I then gather all queries executed by MySQL server and analyze them to find out which ones put most load on it (note that contrary to popular belief those might not be the queries from slow query log). In next phase I suggest few ideas on how to optimize under performing queries, possibly with pros and cons of each solution. If possible I try to optimize the server by rewriting queries, creating additional indexes, deleting unused indexes, database denormalization (which essentially means pre computing some values) or normalization (depending on state of Your database). I also review overall server status, if data is stored correctly, if proper data types are being used - basically it's memory optimization.
If You have any questions I will be glad to answer them.
Regards,
Matt