A: 

I've got some ideas, not sure if they'll work, and I'm still using rails 2.3

Idea 1- add to your models default_scope :order => 'sequence'

Idea 2-

Product.find(:all, :include =>{:product_properties => {:properties => :property_type} }, :order=>" products.sequence, property_types.sequence")

note: the table may not be called property_types in the query, but you can look at the logs and see what sort of alias it was give by rails.

Last resort

a.sort_by {|a| a}

(no need to create a hash)

Anna
I edited the post. The reason I need a hash is because I have this hugely detailed collection, but I want to display in chunks like I've listed above.
AKWF
A: 

Here is what I ended up doing. It is a combination of ":has_many, :through" relationships and AREL, and it allows me to display nested relationships in a pretty way without a whole lot of code.

<% for pt in PropertyType.where("name not in ('Interchanges','Description')").order(:name) %>
    <% next unless pt.product_properties.where(:product_id => @product.id).first %>
    <h2><%= pt.name %></h2>
    <p>
        <% for pp in @product.product_properties.includes(:property).order("properties.name") %>
            <%= pp.property.name %>: <%= pp.value %><br />
        <% end %>
    </p>
<% end %>
AKWF