Comcast tells me that they can install two asymmetric cable lines (16Mbps down/2Mbps up) in my office and then I can load balance them to double the bandwidth by using a Cisco router. Does that make sense?
According to this only outgoing traffic will get load balanced:
By default, when a router has 2 identical routes toward a destination, it will load-balance the traffic per session.
Per session means, if you are connecting to server A from behind the router, all that traffic will flow via one WAN connection. If you initiate another connection to server B, that new session may flow via the same WAN connection or a different WAN connection.
You can change the default behavior and load-balance per-packet. However, per-packet load-balancing is not recommended as packets may arrive out-of-order.
Both load-balancing methods are used for point-to-point connections, very hard to load-balance internet traffic as you have no control in the return traffic.
So per session load balancing won't really double my bandwidth - if I'm downloading or uploading a large file I'll be limited to just one of the two lines. Do you think packets arriving out of order (if I choose the per packet method) is a problem for TCP connections?
Dual links do double your available bandwidth, but as you note with the example of a single file, it's not really the same as a single link with 2x the bandwidth. The closest you can come to using muliple links to behave as one higher capacity links, is if they are logically bonded together (e.g. MLPPP).
TCP can handle packets out of sequence, but depending on the TCP stack's expectations, too many out of sequence cause needless retransmissions and transmission speed backoff. (Packets too much out of sequence will be considered, incorrectly, lost or dropped.)
The impact of out of sequence packet delivery to non-TCP protocols can vary greatly; something you want to avoid, perhaps even more so than for TCP.
Per session load balancing won't really double your bandwidth but having 2 links will allow you to have more bandwidth available for different sessions and services.
As for the out-of-order packet issue, it all depends on the application and not the transport protocol. For instance, you can't run VoIP on a per-packet configuration.
You've mentioned this is a cable service, what's the purpose for these connections - simple internet browsing or hosting services?
Then you should be able to obtain faster throughput than having a single link (not double) provided you have equal routes or default routes towards the internet.
ip route 0.0.0.0 0.0.0.0 LinkA
ip route 0.0.0.0 0.0.0.0 LinkB
Another option you might be able to place upon Edison's example of using two default route paths, is determine whether your router might support OER or PfR. Both are able to (outbound) dynamically load balance your links and/or pick the best performing path.