I think your estimation of insertion sort's complexity is wrong. You didn't describe the details of how you got the result, but it seems you forgot about the time needed to insert - I mean the time you need to move some part of the sorted array to make place for the element you are inserting.
After you sorted n-1 elements, you need O(log(n)) time to find the place for n-th element and O(n) (pessimistically) time to move part of the sorted array and make place for the n-th element. So the total complexity is
O(1 + ... + n + log 1 + ... + log n) = O(n^2 + n log n) = O(n^2).
You don't improve your algorithm by binary search, because you have to shift part of array (of linear size in terms of n) anyway.