La línea es muy borrosa, IMO, y la palabra marco a menudo se reduce a un término de marketing. Por ejemplo, .Net Framework proporciona tanto un conjunto de bibliotecas (por ejemplo, código que puede llamar, en la respuesta de Nathan Hughes), como algo para lo que se escribe código que llama a su código.
Cuando personalmente pienso en framework, pienso en algo que proporciona algunos consejos sobre la estructura de su código. Le dice qué componentes de su aplicación podrían existir, y cómo podrían interactuar, o dónde podrían sentarse en el sistema de archivos, incluso.
Es decir: Inversión de control. – NullUserException