If you're willing to learn a little Javascript, I find doing the same stuff in jQuery to be fast and easy.  It sounds like you're still doing AJAX calls, just the link_to_remote behavior was having unfortunate side effects.
If your Rails view code looks like this:
<%= link_to "Show me", slow_page_url, :class => 'remote', :'data-update' => 'display' %>
I like to add a jQuery block like so:
<% content_for :dom_ready do %>
  // register a callback for the click event on links with class 'remote'
  $('a.remote').click( function() {
    // this is the clicked_link, which you may want to 
    // persist thru several levels of callbacks
    // so assign it to a local variable
    var clicked_link = this;
    // assuming you already have a start_spinner function, 
    // and you might pass it the object where the click occured
    start_spinner(clicked_link);
    // here's the ajax call, which will automatically update 
    // the div you identified using the data-update attribute 
    // with the returned html
    $('#'+$(this).attr('data-update')).load( $(this).attr('href'), {}, function() {
       //this callback only runs when the AJAX request has completed
      stop_spinner( clicked_link );
    } );
    // prevents the click event from propagating to the window object 
    //and moving the user away from the current page
    return false;
  } );
<% end %>
Then I have all my javascript load at the bottom of my layout like so
<%= javascript_include_tag 'jquery-1.3.2.js' %>
<script type="text/javascript">
$( function() {
  <%= yield :dom_ready %>
);
</script>