First off it would be a good idea to establish how slow your template is rendering and how many database queries are being performed. I would then strip back your template and add each element back into it individually seeing how many additional queries are needed and how much additional time they take.
Turn on the Output Profiler by going to Admin > System Administration > Output and Debugging. This will show a bunch of useful information including execution time, memory usage and the number of queries performed.
The relationship fields are probably the main issue in your template as each one will be adding about 3 additional queries per entry. Times that by the 10 entries in your channel entries loop and you are potentially using 30 queries for each relationship field that is being displayed.
If you have to display relationships or any add-on that uses it's own database table in a listing there are a few things you can do to reduce the number of queries. I will commonly write a plugin with my own custom queries to get the information I need more directly. Greg Aker wrote a good article on creating Expression Engine plugins. Stash is also very helpful when you need to use query intensive tags more than once.
Unfortunately there's not really a magic bullet when it comes to performance. One of the great things about Expression Engine is that's easy to construct and template quite complex websites. However you can get yourself into a bit of trouble if you don't understand what's going on behind the scenes. Familiarising yourself with the output profiler and the database queries that are being run for each tag will go a long way when thinking about how you can build a site with performance in mind.